如何将字符串作为参数传递给Python的csv的writerow?

时间:2019-02-05 20:55:53

标签: python string python-2.7 csv parameters

以下代码(在python 2.7中)可用于创建.csv文件:

with open('court_addresses.csv', 'w') as csvfile:
    fieldnames = ['court_name', 'full_court_link', 'clean_address']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writerow({'court_name': court_name, 'full_court_link': full_court_link, 'clean_address': clean_address})

但是,如果我没有如下定义的变量,该怎么写呢?

row = "'court_name': court_name, 'full_court_link': full_court_link, 'clean_address': clean_address"

不幸的是,这不起作用。如何拨打以下电话:

writer.writerow({row}) 

并且有效(在Python 2.7中)?当前,它引发以下错误:

ValueError:dict包含不在字段名称中的字段

很明显,csv writerow()函数不喜欢将字符串作为参数,即使我知道它也可以用于其他函数。

1 个答案:

答案 0 :(得分:0)

writerow()的参数必须是字典或列表。包含字典内容表示形式的字符串不会自动解析为字典。

如果您的字符串仅包含数据,则可以使用ast.literal_eval()对其进行解析。但是,由于您的字符串包含变量名,因此必须使用eval()对其进行评估。

writer.writerow(eval('{' + row + '}')) 

这非常危险,因为eval()可以执行任意代码。我建议您找到另一种做自己的事的方式。例如。使其成为一本实际的字典:

row = {'court_name': court_name, 'full_court_link': full_court_link, 'clean_address': clean_address}
writer.writerow({row})