[英]replicating a row with changing a field in Python
我有一個很大的csv文件,其中包含兩列,例如: Id 和Vehicle
我喜歡復制行,如果車輛是“卡車”,而是放“汽車”。 我有此代碼,但有一個錯誤
這說
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
這是什么意思? 我哪里錯了?
infilename = r'external carriers.csv'
outfilename = r'outputCSV.csv'
with open(infilename, 'rb') as fp_in, open(outfilename, 'wb') as fp_out:
reader = csv.reader(fp_in, delimiter=",")
writer = csv.writer(fp_out, delimiter=",")
for row in reader:
if len(row) == 2:
if row == "truck":
writer.writerow = "car"
顯然,您已經以文本模式打開了需要rt
的文件:
with open(infilename, 'rt') as fp_in, open(outfilename, 'wt') as fp_out:
另外,如果要檢查車輛類型,則需要檢查保留車輛名稱的row[1]
,然后重新分配該行並將該行寫入輸出文件。還要注意,您無需檢查長度如果您的性能為O(n)且對於大文件(特別是大行)的性能非常低效,則調用len
函數可能會導致行嚴重惡化。
infilename = r'external carriers.csv'
outfilename = r'outputCSV.csv'
with open(infilename, 'rt') as fp_in, open(outfilename, 'wt') as fp_out:
reader = csv.reader(fp_in, delimiter=",")
writer = csv.writer(fp_out, delimiter=",")
for row1,row2 in reader:
if row2 == "truck":
writer.writerow([row1,'car'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.