Python JSON到CSV,带有可变字段

时间:2017-09-25 10:56:05

标签: python json csv

我有一个非常大的json文件(如1,5gb),我需要将其转换为csv。

问题在于,有时会出现一个额外的字段:

[
    {
        "item": {
            "name": "something",
            "colors": {
                "color_of_something": "something",
                "color_of_something2": "something",
                "color_of_something3": "something"
            },
            "dimensions": {
                "dimensions1": "something",
                "dimensions2": "something",
                "dimensions3": "something"
            },
            "This_field_appears_sometimes": "something",
            "description": {
                "text": "something"
            }
        }
    }]

我有这段代码将json文件转换为csv文件:

# -*- coding: utf-8 -*-
import json, csv
with open("items.json") as file:
    data = json.load(file)
    csv_data = csv.writer(open('items.csv','wb+'))
    csv_data.writerow(['item_name','item_color','item_dimension','item_random_field','item_description')
    for json_parsed in data:
        csv_data.writerow([
            json_parsed['item']['name'],
            json_parsed['item']['colors']['color_of_something'],
            json_parsed['item']['dimensions']['dimensions1'],
            json_parsed['item']['This_field_appears_sometimes'],
            json_parsed['item']['description']['text']
        ])

当我运行任务时,我收到此错误:

KeyError:'This_field_appears_sometimes'

需要一些提示或建议来解决这个问题,同时我会尝试对此代码进行len检查。

2 个答案:

答案 0 :(得分:3)

你可以像这样使用“安全获取”:

json_parsed['item'].get('This_field_appears_sometimes', '')

或检查条件是否在项目

if 'This_field_appears_sometimes' in json_parsed['item'].keys()

答案 1 :(得分:1)

原因是某些项目中没有关键字“This_field_appears_sometimes”。

您可以使用json_parsed['item'].get('This_field_appears_sometimes')或查看json文件