代码之家  ›  专栏  ›  技术社区  ›  Elias Cort Aguelo

带变量字段的Python JSON到CSV

  •  2
  • Elias Cort Aguelo  · 技术社区  · 7 年前

    我有一个非常大的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"
                }
            }
        }]
    

    # -*- 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']
            ])
    

    当我运行任务时,出现以下错误:

    需要一些提示或建议来解决这个问题,同时我会尝试一下len检查是否对这段代码有效。

    2 回复  |  直到 7 年前
        1
  •  3
  •   lapinkoira    7 年前

    您可以使用以下“安全获取”:

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

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

        2
  •  1
  •   Yuan Wang    7 年前

    原因是某些项目中没有键“This\u field\u有时出现”。

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