¿Escribiendo datos JSON jerárquicos a Excel xls desde Python?

Quiero escribir algunos datos de python a xlsx. Actualmente lo tengo almacenado como JSON, pero no importa lo que esté saliendo de Python. Aquí es cómo se vería el JSON para un solo artículo:

{ 'Word Count': 50 'Key Words': { ['Blah blah blah', 'Foo', ... ] } 'Frequency': { [9, 12, ... ] } 'Proper Nouns': { ['UN', 'USA', ... ] } 'Location': 'Mordor' } 

Revisé el módulo XlsxWriter pero no puedo entender cómo traducir datos jerárquicos que no sean necesariamente del mismo tamaño (tenga en cuenta el número de nombres propios entre los dos “objetos” de datos).

Cómo quiero que se vean los datos:

Captura de pantalla de excel

Cualquier punteros?

Como sus estructuras pueden ser anidadas arbitrariamente, sugeriría usar recursión para lograr esto:

 from collections import OrderedDict import xlsxwriter import json def json_to_excel(ws, data, row=0, col=0): if isinstance(data, list): row -= 1 for value in data: row = json_to_excel(ws, value, row+1, col) elif isinstance(data, dict): max_row = row start_row = row for key, value in data.iteritems(): row = start_row ws.write(row, col, key) row = json_to_excel(ws, value, row+1, col) max_row = max(max_row, row) col += 1 row = max_row else: ws.write(row, col, data) return row text = """ [ { "Source ID": 123, "WordCount": 50, "Key Words": ["Blah blah blah", "Foo"], "Frequency": [9, 12, 1, 2, 3], "Proper Nouns": ["UN", "USA"], "Location": "Mordor" }, { "Source ID": 124, "WordCount": 50, "Key Words": ["Blah blah blah", "Foo"], "Frequency": [9, 12, 1, 2, 3], "Proper Nouns": ["UN", "USA"], "Location": "Mordor" } ] """ data = json.loads(text, object_pairs_hook=OrderedDict) wb = xlsxwriter.Workbook("output.xlsx") ws = wb.add_worksheet() json_to_excel(ws, data) wb.close() 

Esto te daría un archivo de salida con el siguiente aspecto:

Captura de pantalla de excel