[英]How to rewrite a line in a CSV using python?
我的代碼有問題 - 我有一個 csv 文件,我必須將 csv 中的第一行保存為列表。 然后我必須清除文件並使用列表重寫該行。 這是我的代碼:
import csv
f = open('PlateBook.csv','r')
reader = f.readlines()
for row in reader:
outrow = list(row)
with open('PlateBook.csv', 'w', newline='') as fp:
f.truncate
a = csv.writer(fp, delimiter=',')
data = [outrow]
a.writerows(data)
問題是,當我在 Excel 中打開 csv 時,它顯然是錯誤的。 每個字符填充一個單元格 - 我希望文件看起來與我編寫文件時完全相同。
從你描述的問題來看,我猜你不想做
outrow = list(row)
它只是創建了每個字符的列表,但更像是
outrow = row.split(',')
它創建了一個由逗號分隔的字符串列表。
或者,更好的是,使用csv.reader
,這樣它就可以處理引號和 csv 的所有小細節。
這是您應該做什么的未經測試的示例代碼。
import csv
with open('PlateBook.csv','rt') as input_file:
reader = csv.reader( input_file )
with open('PlateBook.temp.csv','wt') as output_file:
writer = csv.DictWriter( output_file, fieldnames = csvreader.fieldnames )
writer.writeheader()
for row in reader:
writer.writerow( row )
#So far we didnot touch the original file, so if the process
#fails, nothing is left in half-processed state.
import os
os.remove( 'PlateBook.csv' )
os.rename( 'PlateBook.temp.csv', 'PlateBook.csv' )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.