簡體   English   中英

通過更改Python中的字段來復制行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM