【发布时间】:2011-01-15 03:56:02
【问题描述】:
我正在处理一些文件,并希望创建我正在处理的日志。我通过使用字典来保存每个观察的键和值来创建日志,然后将字典附加到列表(字典列表)中。
为了保存日志,我使用 Python 的 csv 模块来写出字典列表。最初我使用的是 writerows,但我遇到了一个问题,即我存储的一些值很少是 ascii 以外的东西
例子
Investee\xe2\x80\x99s Share of Profits
我的解决方案是使用 try / except 语句遍历我的字典列表以跳过有问题的字典
for docnumb, item in enumerate(x[1]):
try:
dict_writer.writerow(item)
except UnicodeEncodeError:
missed.append(docnumb)
item
但是,这会导致在输出 csv 文件的每一行中插入一个额外的行。
value1 value2 value3 etc . . .
#blank row
value1 value2 value3 etc
我看不出如何抑制这种行为。
多一点代码,让我更清楚我是如何到达这里的
import csv
keyset=set([])
for item in x[1]:
keyset |=set(item.keys())
keys=list(keyset)
logref=open(r'c:\December_2010_File_list.csv','w')
dict_writer=csv.DictWriter(logref,keys)
keyset |=set(item.keys())
【问题讨论】: