寻找总成本

时间:2016-05-18 18:59:15

标签: python csv writing

我正在尝试一个商店计划,需要能够打印出收据,其中包含用户想要的详细信息,然后打印总费用。

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

    • 34512340 Plain Brackets 0.5
    • 12395675黄色卷笔刀2
    • 56756777 100mm螺栓0.2
    • 90673412 L形支架1.2
    • 12568673 Desk Tidy 3
    • 22593672回收箱5
    • 65593691 500 Laminate Sheets 4.5
    • 98593217 200 Sticky Notes 2.5
    • 98693214 Blue Pencil Sharpener 2.1
    • 98693399 500张价值纸5
    • 11813651执行主席65
    • 98456390纸盘6
    • 98555567打孔3
    • 98555550文件柜45
    • 98553655 Stapler 2
    • 96553657 Drill 15
    • 91823656 Pritt Stick 2
    • 99823658 Sellotape 2
  3. 这就是我搜索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)
    
    1. 假设程序在csv文件中找到代码,它会将代码行保存为名为' product'的变量。并询问用户想要多少(可变数量)
    2. 所以,产品看起来像这样     34512340Plain Brackets0.55 例如,数量为5

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

      我需要以某种方式从代码和产品标题中分割价格,但不确定如何......

      任何想法?

1 个答案:

答案 0 :(得分: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=' ')