从Python中的txt文件中读取商店列表

时间:2015-05-04 18:27:55

标签: arrays string file python-2.7 struct

我对Python很新鲜,需要帮助从txt文件中读取信息。我有一个大的C ++应用需要在Python中复制它。可悲的是,我不知道从哪里开始。我一直在阅读和观看一些教程,但他们的帮助很少,而且我已经没时间了。

所以我的任务是: 我有一个购物清单:

  

- 商品名称,价格和年龄。

我还需要创建两个搜索。

  1. 搜索商品是否在店内(比较字符串)。
  2. if name of the item is == to the input name.

    1. 年龄搜索。程序找到项目后,需要根据价格打印清单 - 从最低价格到最高价格。
    2.   

      例如,您输入年龄15 - 30,该程序打印出适当的   物品并按价格对其进行分类。

      任何帮助都会很好。至少从我可以开始的地方开始。 谢谢。

      EDITED

      到目前为止,我有这段代码:

      class data:
          price = 0
          agefrom = 0
          ageto = 0
          name = ''
      
      # File reading
      def reading():
          with open('toys.txt') as fd:
              toyslist = []
              lines = fd.readlines()
              for line in lines:
                  information = line.split()
                  print(information)
                  """information2 = {
                      'price': int(information[1])
                      'ageftom': int(information[2])
                      'ageto': int(information[3])
                      #'name': information[4]
                  }"""
                  information2 = data()
                  information2.price = int(information[0])
                  information2.agefrom = int(information[1])
                  information2.ageto = int(information[2])
                  information2.name = information[3]
      
                  toyslist.append(information2)
          return toyslist
      
      information = reading()
      

      我有这个问题的问题。我想将用户的输入与txt文件中的项目信息进行比较。

      n_search = raw_input(" Please enter the toy you're looking for: ")
      
      def name_search(information):
      for data in information:
          if data.name == n_search:
      print ("We have this toy.")
      else:
          print ("Sorry, but we don't have this toy.")
      

1 个答案:

答案 0 :(得分:0)

如果你想在列表中填充某些内容,它通常会像以下一样简单:

if "apple" in ["tuna", "pencil", "apple"]

但是,在您的情况下,要搜索的列表是列表列表,因此您需要" project"不知何故。列表理解通常是最容易推理的,在for循环中是一种for循环。

if "apple" in [name for name,price,age in [["tuna",230.0,3],["apple",0.50,1],["pencil",1.50,2]]]

从这里开始,您需要开始查看过滤器,从而提供确定条目是否匹配的函数。你可以在for循环中使用自己的东西,或者使用像#iteffools那样更具功能性的东西。

对列表进行排序也很简单,只需使用排序(my_list)'如果需要,提供比较器功能。

根据你的评论举例...

class ShoppingListItem:
   def __init__(self,name,price,age):
      self.name=name
      self.price=price
      self.age=age

from collections import namedtuple
sli = namedtuple("ShoppingListItem",['name','age','price'])