2016-05-18 61 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=' ')