Arrays 在Python中从txt文件读取车间列表

Arrays 在Python中从txt文件读取车间列表,arrays,string,file,python-2.7,struct,Arrays,String,File,Python 2.7,Struct,我对Python非常熟悉,需要帮助读取txt文件中的信息。我有一个大的C++应用程序需要在Python中复制它。遗憾的是,我不知道从哪里开始。我一直在阅读和观看一些教程,但没有得到什么帮助,我的时间也不多了 所以我的任务是: 我有一份购物清单,上面有: -项目名称、价格和年限 我还需要创建两个搜索 搜索商品是否在商店中(比较字符串) 如果项的名称为==输入名称。 按年龄搜索。一旦程序找到项目,它就需要根据价格打印列表——从最低价格到最高价格 例如,输入15-30岁,程序会打印出适当的数据 并按价

我对Python非常熟悉,需要帮助读取txt文件中的信息。我有一个大的C++应用程序需要在Python中复制它。遗憾的是,我不知道从哪里开始。我一直在阅读和观看一些教程,但没有得到什么帮助,我的时间也不多了

所以我的任务是: 我有一份购物清单,上面有:

-项目名称、价格和年限

我还需要创建两个搜索

  • 搜索商品是否在商店中(比较字符串)
    如果项的名称为==输入名称。

  • 按年龄搜索。一旦程序找到项目,它就需要根据价格打印列表——从最低价格到最高价格 例如,输入15-30岁,程序会打印出适当的数据 并按价格对物品进行分类

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


    已编辑


    到目前为止,我有以下代码:

    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.")
    

    如果您想在列表中查找某些内容,通常可以简单地执行以下操作:

    if "apple" in ["tuna", "pencil", "apple"]
    
    但是,在您的情况下,要搜索的列表是一个列表列表,因此您需要以某种方式“投影”它。列表理解通常是最容易推理的,一种for循环中的for循环

    if "apple" in [name for name,price,age in [["tuna",230.0,3],["apple",0.50,1],["pencil",1.50,2]]]
    
    从这里开始,您需要查看过滤器,通过过滤器可以提供一个函数来确定条目是否匹配。您可以在for循环中运行自己的应用程序,也可以使用诸如“itertools”之类功能更强大的工具

    在列表上排序也很容易,如果需要,只需使用“排序(my_list)”提供一个比较函数


    根据您的评论示例

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


    好的,你可能需要一个
    循环,比较
    ==
    或[]
    中的
    项,就像威尔指出的那样,并从这样做的文件中读取:
    打开(“myFileName.txt”,“r”)作为infle:records=infle.readlines()
    <代码>记录
    将保存文件中的所有行,即
    -项目名称、价格和年限。
    。名称搜索在您的示例中用作变量和函数名。一个将覆盖另一个我翻译这个程序时出错了。在我的原始代码中,变量和函数的名称是不同的。正如我提到的,它表示for循环中存在错误。我不明白为什么:C++中我用结构来做。用“姓名、价格和年龄”来挑战该项目。这里有可能做类似的事情吗?o、 o因为项目的详细信息需要“粘”在一起。是的。有几种方法。创建一个类或使用名为tuplesThank的类,让您轻松开始。它真的帮助了我!如果您选择,请随意将答案标记为正确嘿,我有一个关于for循环的问题,我编辑了主要帖子并添加了一些代码。如果你能告诉我我做错了什么,我会很高兴。。。
    from collections import namedtuple
    sli = namedtuple("ShoppingListItem",['name','age','price'])