使用DictWriter编写字典键的子集

12 python csv dictionary

我编写了一个函数,使用该csv模块将字典列表序列化为CSV文件,代码如下:

data = csv.DictWriter(out_f, fieldnames)
data.writerows(dictrows)
Run Code Online (Sandbox Code Playgroud)

但是,我有时想要只写出每个字典键的子集.如果我作为fieldnames每个字典所具有的键的子集传递,我会收到错误:

"dict contains fields not in fieldnames"
Run Code Online (Sandbox Code Playgroud)

我如何才能使DictRows只将我指定的字段的一部分写入CSV,忽略字典中但不在字段名中的那些字段?

Ale*_*lli 39

最简单,最直接的方法是通过extrasaction='ignore'在初始化的DictWriter情况下,作为记录在这里:

如果传递给writerow()方法的字典 包含在字段名中找不到的键,则可选的extrasaction参数指示要采取的操作.如果设置为 'raise'a ValueError则被提升.如果设置为'ignore',则忽略字典中的额外值.

它也适用于writerows内部,只是writerow反复调用.