0
我有一个使用Scraperwiki写入其sqlite商店的项目,但我需要编写一个CSV。美中不足的是,所有的数据都存储在一个字典,它工作得很好写的sqlite:将表格划成字典并将每行写入CSV
scraperwiki.sqlite.save(unique_keys = ['somekey'], data = data, table_name='fancy')
我跑后,我凑每一行。没有字典的顺序,所以我不能只将值写入CSV。我一直在寻找csv.DictWriter和collections.defaultdict,而且我仍然围绕着如何重构我的代码,以便我可以写入数据,这是一个CSV字典。下面是我的代码示例为现在的结构:
def store_exception(exception, line_number, some_string):
data = {
'timestamp' : datetime.now(),
'line_number': line_number,
'message' : exception,
'string' : some_string
}
scraperwiki.sqlite.save(unique_keys = ['timestamp'], data = data, table_name='error_log')
我想,我想是这样的,虽然:
def store_exception(exception, line_number, some_string):
data = {
'timestamp' : datetime.now(),
'line_number': line_number,
'message' : exception,
'string' : some_string
}
d = defaultdict(lambda: "")
d_order = d['timestamp'],d['line_number'],d['message'],d['string']
with open('some/path.csv', 'w') as csvfile:
linewriter = csv.DictWriter(csvfile, d_order, delimiter='|',
quotechar='"', quoting=csv.QUOTE_MINIMAL)
linewriter.writerow(data)
这似乎效率不高,虽然。我是否需要collections.defaultdict和csv.DictWriter?
你的代码看起来不错,除了这一点:'当d = defaultdict(拉姆达:“” ) d_order = d ['timestamp'],d ['line_number'],d ['message'],d ['string']'只需给出DictWriter中的列名列表。或者可能是我不明白的东西? – crow16384
@ crow16384我想弄清楚我是否需要DefaultDict和DictWriter。这听起来像我不需要两个。 – Amanda