我环顾了整个网络,但似乎无法使这件事起作用。
我正在使用python2.6读取 csv 文件input.csv并希望在 python 中使用DictReader和DictWriter将其逐行输出到output.csv中。
我对input.csv的编码一无所知。当我打开output.csv时,对眼睛来说一切都很好,但是当我在两行上运行diff命令时,每一行都是不同的。我需要文件的字节序列相同,因为我将文件作为作业提交。
这是我拥有的代码的基本骨架(从这里和那里借来的):
from csv import DictReader,DictWriter
class DictWriterEx(DictWriter):
def writeheader(self):
header = dict(zip(self.fieldnames, self.fieldnames))
self.writerow(header)
with open('input.csv','rb',) as f:
dr = DictReader(f)
with open('output.csv','wb') as o:
dw = DictWriterEx(o,fieldnames=dr.fieldnames)
dw.writeheader()
for row in dr:
dw.writerow(dict((k, v) for k, v in row.iteritems()))
我也试过改变
dw.writerow(dict((k, v) for k, v in row.iteritems()))
进入
dw.writerow(dict((k, v.encode('utf-8')) for k, v in row.iteritems()))
这给了我一个例外:
UnicodeDecodeError:“ascii”编解码器无法解码位置 7 中的字节 0xc3:序数不在范围内(128)
请帮我解决这个问题,因为我快疯了。
解决方案:使用lineterminator="/n" 初始化DictWriter