myn*_*ame 89 python csv dictionary
我正在使用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)
Run Code Online (Sandbox Code Playgroud)
Fat*_*man 123
默认情况下,csv模块中的类使用Windows样式的行终止符(\r\n)而不是Unix样式(\n).这可能是导致明显的双重换行的原因吗?
如果是这样,您可以在DictWriter构造函数中覆盖它:
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', lineterminator='\n', fieldnames=headers)
Run Code Online (Sandbox Code Playgroud)
ber*_*nie 31
来自http://docs.python.org/library/csv.html#csv.writer:
如果csvfile是一个文件对象,则必须在平台上打开"b"标志,这会产生影响.
换句话说,当打开文件时,你传递'wb'而不是'w'.完成写入后,
您还可以使用with语句关闭文件.
测试示例如下:
from __future__ import with_statement # not necessary in newer versions
import csv
headers=['id', 'year', 'activity', 'lineitem', 'datum']
with open('file3.csv','wb') as fou: # note: 'wb' instead of 'w'
output = csv.DictWriter(fou,delimiter=',',fieldnames=headers)
output.writerow(dict((fn,fn) for fn in headers))
output.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
Jam*_*son 10
更改此行中的"w"(写入):
output = csv.DictWriter(open('file3.csv','w'), delimiter=',', fieldnames=headers)
Run Code Online (Sandbox Code Playgroud)
'wb'(写二进制文件)为我解决了这个问题:
output = csv.DictWriter(open('file3.csv','wb'), delimiter=',', fieldnames=headers)
Run Code Online (Sandbox Code Playgroud)
感谢@dandrejvv对上述原帖中的评论中的解决方案.
| 归档时间: |
|
| 查看次数: |
94624 次 |
| 最近记录: |