其他人回答说,使用Python 3时,您应该以文本模式打开输出文件,即
with open('out.csv', 'w', newline='') as resultFile:
...
但是,您还需要解析传入的CSV数据。因为它是您的代码,所以将输入CSV文件的每一行作为单个字符串读取。然后,无需将该行分成其组成字段,它会将字符串传递给CSV编写器。结果,csv.writer
将将字符串视为一个序列,并将每个字符 (包括任何终止的换行符)输出为单独的字段。例如,如果您输入的CSV文件包含:
1,2,3,4
1,“,”,2,“,”,3,“,”,4,“
”
您应该将for
循环更改为此:
for row in csv.reader(f1):
# process the row
wr.writerow(row)
现在,输入的CSV文件将被解析为字段,row
并将包含一串字符串-每个字段一个。对于前面的示例,row
将是:
for row in csv.reader(f1):
print(row)
['1','2','3','4']
1,2,3,4
将所有这些放在一起,您将获得以下代码:
import csv
with open('input_1.csv') as f1, open('out.csv', 'w', newline='') as resultFile:
wr = csv.writer(resultFile, dialect='excel')
for row in csv.reader(f1):
wr.writerow(row)