这个问题在这里已有答案:
我正在使用DictWriter将字典中的数据输出到csv文件 . 为什么CSV文件在每条数据线之间都有一个空行?这不是一个大问题,但我的数据集很大,不适合一个csv文件,因为它有太多的行,因为“双倍间距”使文件中的行数加倍 .
我写入字典的代码是:
headers=['id', 'year', 'activity', 'lineitem', 'datum']
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', fieldnames=headers)
output.writerow(dict((fn,fn) for fn in headers))
for row in rows:
output.writerow(row)
4 回答
默认情况下,
csv
模块中的类使用Windows样式的行终止符(\r\n
)而不是Unix样式(\n
) . 这可能导致明显的双重换行吗?如果是这样,您可以在
DictWriter
构造函数中覆盖它:从http://docs.python.org/library/csv.html#csv.writer:
换句话说,打开文件时,您传递'wb'而不是'w' .
您也可以使用
with
语句在写入文件时关闭该文件 .测试示例如下:
更改此行中的“w”(写入):
'wb'(写二进制)为我解决了这个问题:
Python v2.75: Open()
感谢@dandrejvv在上面原始帖子的评论中提供的解决方案 .
我刚测试了你的片段,它们在这里没有双倍间距线 . 行尾是
\r\n
,所以我在你的情况下检查的是:你的编辑器正在正确读取DOS文件
no \ n存在于行dict的值中 .
(请注意,即使使用\ n放置一个值,DictWriter也会自动引用该值 . )