过滤json并将输出写入csv

时间:2015-03-20 11:31:40

标签: python json csv

如何过滤掉JSON文件的特定键值对并将其余部分写入CSV?

即。过滤掉headerName密钥并将URL, Domain, Pages写入CSV文件:

[{"URL": "http://help.abc.com/", "headerName": Null, "Domain": "www.abc.com", "Pages": "27"},
 {"URL": "https://support.bcd.com/", "headerName": Null, "Domain": "www.bcd.com", "Pages": "15"}]

这会产生:

"http://help.abc.com/", "www.abc.com", "27"
"https://support.bcd.com/", "www.bcd.com", "15" 

1 个答案:

答案 0 :(得分:2)

使用csv.DictWriter() instance来处理将文件写入文件,将其URLDomainPages作为字段名称,并将extrasaction参数设置为'ignore'

  

fieldnames 参数是一系列键,用于标识传递给writerow()方法的字典中的值写入 csvfile 的顺序。

     

[...]

     

如果传递给writerow()方法的字典包含 fieldnames 中找不到的密钥,则可选的 extrasaction 参数指示要采取的操作。如果设置为'raise'则会引发ValueError。如果设置为'ignore',则会忽略字典中的额外值。

然后,您可以直接将您的词典列表直接传递给writer.writerows()方法:

import csv
import json

with open(outputfilename, 'wb') as outfile:
    writer = csv.DictWriter(outfile,
        fieldnames=('URL', 'Domain', 'Pages'),
        extrasaction='ignore')

    your_json_list = json.loads(your_json_string)
    writer.writerows(your_json_list)