Python 寻找总成本

Python 寻找总成本,python,csv,writing,Python,Csv,Writing,我正在尝试一个商店计划,需要能够打印出一个用户想要什么详细的收据,然后打印一个总成本 用户输入8位条形码 假设它是有效的条形码类型,程序将在csv文件中搜索它,其中包含产品、代码和价格列表。看起来像这样。(在excel中打开时,每条记录位于不同的列中) 34512340普通支架0.5 12395675黄色卷笔刀2 56756777 100mm螺栓0.2 90673412 L形支架1.2 12568673办公桌整洁3 22593672回收箱5 65593691 500层压板4.5 9859321

我正在尝试一个商店计划,需要能够打印出一个用户想要什么详细的收据,然后打印一个总成本

  • 用户输入8位条形码
  • 假设它是有效的条形码类型,程序将在csv文件中搜索它,其中包含产品、代码和价格列表。看起来像这样。(在excel中打开时,每条记录位于不同的列中)

    • 34512340普通支架0.5
    • 12395675黄色卷笔刀2
    • 56756777 100mm螺栓0.2
    • 90673412 L形支架1.2
    • 12568673办公桌整洁3
    • 22593672回收箱5
    • 65593691 500层压板4.5
    • 98593217 200便签2.5
    • 98693214蓝色卷笔刀2.1
    • 98693399 500张价值纸5
    • 11813651执行主席65
    • 98456390纸盘6
    • 98555567孔冲头3
    • 98555550文件柜45
    • 98553655订书机2
    • 96553657钻孔15
    • 91823656 Pritt斗杆2
    • 99823658 Sellotape 2
  • 这就是我搜索csv的方式

    def checkfile(code):
        found = None
        with open('products.csv', newline='') as f:
            reader = csv.reader(f, delimiter='\t')
            for line in f:
                data = line.split(",")
                if code == data[0]:
                    print("We found your product ",data)
                    return data
            data = code, "is not found. Please try again"
            print (data)
    
  • 假设程序在csv文件中找到代码,然后将代码行保存为一个名为“product”的变量,并询问用户需要多少(变量数量)
  • 所以,产品看起来像这样 34512340普通支架0.55 例如,数量是5

    这两个文件都会写入另一个存储收据的文件。 我需要一种方法将数量乘以价格(在这种情况下,5 x 0.55)

    我需要以某种方式从代码和产品名称中拆分价格,但不确定如何


    有什么想法吗?

    我想这里有两个问题。
    1-您正在将文件传递给
    csv.reader
    ,但只需使用
    f
    即可
    2-您正在使用
    \t
    告诉
    csv.reader
    文件由制表符分隔,但稍后用逗号分隔

    def checkfile(code):
        found = None # This seems redundant?
        with open('products.csv', 'r') as f:
            reader = csv.reader(f, delimiter=',')
            for line in reader:
                print(line) # To see what you're getting 
                if code == line[0]:
                    print("We found your product ", code)
                    return line
            '''
            EDIT: Outside of the question, but the below probably doesn't do what you expect
            data = code, "is not found. Please try again"
            print (data)
            '''
            # Use this instead
            print(code, "is not found. Please try again")
    
    从您的要点(由空格分隔),在现有的csv.reader中使用
    \t
    ,然后尝试基于逗号拆分,很难知道您需要什么。因此,您可能还必须尝试这些方法才能获得有效的结果:

    reader = csv.reader(f, delimiter='\t')
    reader = csv.reader(f, delimiter=' ')
    

    我认为这里有两个问题。
    1-您正在将文件传递给
    csv.reader
    ,但只需使用
    f
    即可
    2-您正在使用
    \t
    告诉
    csv.reader
    文件由制表符分隔,但稍后用逗号分隔

    def checkfile(code):
        found = None # This seems redundant?
        with open('products.csv', 'r') as f:
            reader = csv.reader(f, delimiter=',')
            for line in reader:
                print(line) # To see what you're getting 
                if code == line[0]:
                    print("We found your product ", code)
                    return line
            '''
            EDIT: Outside of the question, but the below probably doesn't do what you expect
            data = code, "is not found. Please try again"
            print (data)
            '''
            # Use this instead
            print(code, "is not found. Please try again")
    
    从您的要点(由空格分隔),在现有的csv.reader中使用
    \t
    ,然后尝试基于逗号拆分,很难知道您需要什么。因此,您可能还必须尝试这些方法才能获得有效的结果:

    reader = csv.reader(f, delimiter='\t')
    reader = csv.reader(f, delimiter=' ')
    

    您应该确保您的代码正确缩进您必须阅读每份收据的CSV吗?你不能只加载一次,然后将“条形码”设置为字典中的一个键,并将项目和价格作为该键的值吗?我不清楚为什么你将分隔符指定为tab,然后必须用逗号分割CSV中的每一行。我从来没见过这个。既然我认为您的问题是如何拆分行上的项目,那么您是否尝试过
    reader=csv.reader(f,delimiter=',')
    然后删除
    data=line.split(“,”)
    ?您是否可以包含一个测试csv文件??我认为,如果我们能看到它的实际样子,大部分的困惑都可以解决。我建议您查看pandas,将csv读入数据框,然后查询条形码的行值。您可以使用类似以下结构:{barcode:[名称、价格、数量],…}以便轻松访问:foo[barcode]易于填充,同时解析文件:foo[data[0]]=[数据[1],[数据[2],您的计算值]易于计算的总成本foo[条形码][1]*foo[条形码][2]你应该确保你的代码正确缩进你必须在每张收据上阅读CSV?你不能只加载一次,然后将“条形码”设置为字典中的一个键,将项目和价格作为该键的值吗?我不清楚为什么你将分隔符指定为制表符,但无论如何都必须用逗号分割CSV中的每一行。我有从未见过这种情况。因为我认为您的问题是如何拆分行上的项目,所以您是否尝试过
    reader=csv.reader(f,delimiter=',')
    ,然后删除
    data=line.split(“,”)
    ?您能提供一个测试csv文件吗?我想如果我们能看到它的实际外观,大部分混乱都可以解决。我建议您查看熊猫,只需将csv读入数据框,然后查询条形码的行值。您可以使用类似以下结构:{条形码:[名称、价格、数量],…}因此很容易访问:foo[barcode]很容易填充,而您在解析文件时:foo[data[0]]]=[data[1],[data[2],您的计算值]很容易计算总成本foo[barcode][1]*foo[barcode][2]