从Python将继承的JSON数据写入excelxls?

2024-09-30 20:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从python写一些数据到xlsx。我目前将它存储为JSON,但它从Python中输出什么并不重要。下面是一篇文章的JSON格式:

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

我签出了XlsxWriter模块,但不知道如何转换大小不一定相同的分层数据(注意两个数据“对象”之间的专有名词数量)。在

我希望数据看起来像:

Excel screenshot

有什么建议吗?在


Tags: 数据keyjsonfoo格式count文章xlsx
1条回答
网友
1楼 · 发布于 2024-09-30 20:29:20

由于您的结构可以任意嵌套,我建议使用递归来实现这一点:

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()  

这将为您提供如下输出文件:

Excel screenshot

相关问题 更多 >