如何过滤掉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"
答案 0 :(得分:2)
使用csv.DictWriter()
instance来处理将文件写入文件,将其URL
,Domain
和Pages
作为字段名称,并将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)