2016-05-18 23 views
1

我正在尝试一个商店计划,需要能够打印出收据,包含用户所需的详细信息,然后列印总成本。查找总成本

  1. 用户输入8位数的条形码
  2. 假设这是一个有效的条码类型,程序会在CSV文件中为它寻找与产品,代码和价格表。它看起来像这样。 (每个记录是在不同的列中的Excel打开时)

    • 34512340平原托架0.5
    • 12395675黄色卷笔刀2
    • 56756777100毫米螺栓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百特棒2
    • 99823658透明胶带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'的变量,并询问用户需要多少(可变数量)
  • 所以,产品看起来像这样 34512340Plain Brackets0.55 和数量是5例如

    上述这些问题都写入到哪里接到存储其它文件。 我需要的方式由价格乘以数量(在这种情况下,5×0.55)

    我需要以某种方式从代码和产品所有权拆分的价格,但不知道如何...

    有任何想法吗?

    +0

    你应该确保你的代码是否正确缩进 – wpercy

    +0

    你必须每收到读取CSV?你能不能只加载一次,并将“条形码”设置为字典中的一个关键字,并将项目和价格作为该关键字的值? – roganjosh

    +0

    我不清楚为什么你将分隔符指定为选项卡,但必须用逗号分隔CSV中的每一行。我从来没有见过这个。由于我_think_你的问题是如何分割一行上的项目,那么你有没有试过'reader = csv.reader(f,delimiter =',')',然后删除'data = line.split(“,”)'? – roganjosh

    回答

    0

    我认为这里有两个问题。
    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=' ')