2017-08-05 292 views
-1

我知道有一些話題告訴我們使用.strip()或.rstrip()函數來做到這一點,但它不適合我。我有一個程序,追加到csv文件的新行,但不幸的是,它會生成一個尾隨的逗號... 我試圖刪除它在Python中的.strip()函數,但它不能很好地工作,我做錯了什麼? 這是什麼發生的例子,當我輸入 'T123' 的Bike_No和'05/08/2017' 用於PURCHASE_DATE如何在csv文件的所有行中刪除逗號python

from datetime import datetime 
    td= datetime.now() 
    initial_bike_detaillist=[] 
    deBatt =100 
    deKM = 0.00 
    deDate = str(td)[8:10] + "/"+ str(td)[5:7] + "/"+ str(td)[0:4] 
    print("Option 4: Add abicycle \n") 
    Bike_No=input("Bike No. :") 
    Purchase_Date=str(input("Purchase Date:")) 
    initial_bike_detaillist=[str(Bike_No),str(Purchase_Date),str(deBatt),str(deDate),str(deKM)]#because there is no write function for int 
    filename="Assignment_Data1.csv" 
    file=open(filepath + filename,"a") 
    file.write("\n") 
    for k in initial_bike_detaillist: 
     file.write("{},".format(k)) 
    print("Bicycle ({}) has been created".format(Bike_No)) 
    file.close() 
    file=open(filepath + filename,"r") 
    for line in file: 
     line.strip() 
     print(line) 

預期輸出=

Bike No.,Purchase Date,Batt %,Last Maintenance,KM since Last 

T101,10/04/2016,55,10/01/2017,25.08 

T102,01/07/2016,10,15/05/2017,30.94 

T103,15/11/2016,94,13/06/2017,83.16 

T104,25/04/2017,58,10/01/2017,25.08 

T105,24/05/2017,5,20/06/2017,93.80 

T123,04/04/2017,100,05/08/2017,0.0 

實際輸出:

Bike No.,Purchase Date,Batt %,Last Maintenance,KM since Last 

T101,10/04/2016,55,10/01/2017,25.08 

T102,01/07/2016,10,15/05/2017,30.94 

T103,15/11/2016,94,13/06/2017,83.16 

T104,25/04/2017,58,10/01/2017,25.08 

T105,24/05/2017,5,20/06/2017,93.80 

T123,04/04/2017,100,05/08/2017,0.0, 

`

+0

使用'line.strip( '')' – Gerrat

+0

您可能需要使用[csv.DictWriter ](https://docs.python.org/3/library/csv.html#csv.DictWriter)它是一個標準庫,它使用起來更容易。不要重新發明輪子! – Adonis

+0

在這段代碼中可以修復很多東西。但是,爲了回答你的問題,用'''file.write(','。join(initial_bike_detaillist)''將file.write(「{},」。格式(k) )''' –

回答

2

代替此行:

for k in initial_bike_detaillist: 
    file.write("{},".format(k)) 

使用以下行:

file.write(','.join(initial_bike_detaillist)) 

代碼:

from datetime import datetime 

td = datetime.now() 
initial_bike_detaillist = [] 
deBatt = 100 
deKM = 0.00 
deDate = str(td)[8:10] + "/" + str(td)[5:7] + "/" + str(td)[0:4] 
print("Option 4: Add abicycle \n") 
Bike_No = input("Bike No. :") 
Purchase_Date = str(input("Purchase Date:")) 
initial_bike_detaillist = [str(Bike_No), str(Purchase_Date), str(deBatt), str(deDate), 
          str(deKM)] # because there is no write function for int 
filename = "Assignment_Data1.csv" 
file = open(filepath + filename, "a") 
file.write("\n") 
# for k in initial_bike_detaillist: 
# file.write("{},".format(k)) 
file.write(','.join(initial_bike_detaillist)) # use this line . 

print("Bicycle ({}) has been created".format(Bike_No)) 
file.close() 
file = open(filepath + filename, "r") 
for line in file: 
    # line.strip() # Then, not need this line 
    print(line) 
相關問題