2016-02-13 48 views
0

基本上我需要寫一行到一個包含產品細節的txt文件,這些細節來自我分割的另一個文本文件。數量變量的最終細節是輸入的數字。當我只要求它輸入1時,爲什麼它會寫入文本文件中的2行?

document = open('Task2.txt', 'r') 
strquantity = str(quantity) 
for line in document: 
    the_line = line.split(",") 
    if the_line[0] == GTIN: 
     with open("receipt.txt", "a") as receipt: 
      receipt.write(the_line[0] + "," + the_line[1]+ "," +the_line[2] + "," + strquantity) 
document.close() 

任務2文件包含:

12345670,spatula,0.99 
57954363,car,1000.20 
09499997,towel,1.20 

的量數爲5和GTIN號碼是12345670.它應該寫入文件中的行是:

12345670,spatula,0.99,5 

但相反,它寫道:

12345670,spatula,0.99, 
5 

(沒有行空間(下一行中有五行))

它爲什麼這樣做,我如何使它只寫入1行?謝謝。

+1

請正確格式化您的代碼,每行縮進4個空格。這是不可讀的。 –

回答

1

原因是因爲當你閱讀每一行時,它會在最後有一個換行符。因此,當您撥打split時,最後一項還將包含一個換行符,因此當您編寫the_list[2]時,它將在此處拆分該行。爲了解決這個問題,請致電strip()如下刪除換行符:

with open('Task2.txt', 'r') as document, open("receipt.txt", "a") as receipt: 
    strquantity = str(quantity) 

    for line in document: 
     the_line = line.strip().split(",") 

     if the_line[0] == GTIN: 
      receipt.write(','.join(the_line[0], the_line[1], the_line[2], strquantity) + '\n') 
+0

差不多......我想你的意思是'line.strip()。split(「,」)'。因爲它是你的代碼將嘗試調用不存在的'list.strip()'方法。 – mhawke

+0

斑點。固定。 –

+0

謝謝!它現在完美運行! –

0

你只需要爆炸之前修剪從每行的換行符。

the_line=line.strip() 
the_line=the_line.split(",") 
相關問題