我看了很多网,但似乎无法让这件事发挥作用。
我正在使用 python2.6 来读取csv文件 input.csv ,并希望将其逐行输出到 output.csv < / strong>在python中使用 DictReader 和 DictWriter 。
我对 input.csv 的编码一无所知。 当我打开 output.csv 时,对于EYES一切都很好但是当我在两行上运行 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答案 0 :(得分:3)
文件是否可能有不同的行结尾?您传递给csv.reader
或csv.writer
的文件应以二进制模式打开(请参阅the documentation),它看起来不像您正在做的那样。这可能导致写入错误的行尾字符。