我如何传递一个字符串作为参数传递给Python的CSV writerow?

问题描述 投票:1回答:1

下面的代码工作(在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})

然而,除了上述语法writerow,如果我有什么变量定义如下:

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

不幸的是,这是行不通的。我怎样才能让下面的调用:

writer.writerow({row}) 

并将它(在Python 2.7)工作?目前,它引发以下错误:

ValueError异常:字典包含字段不是在字段名

显然,CSV writerow()函数不喜欢一个字符串作为参数,尽管我知道,也适用于其他职能的工作。

python string python-2.7 csv parameters
1个回答
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}) 
© www.soinside.com 2019 - 2024. All rights reserved.