【问题标题】:Parse JSON to Excel - Python将 JSON 解析为 Excel - Python
【发布时间】:2017-08-01 18:27:39
【问题描述】:

我正在尝试在 Azure AD 中查询一些返回 JSON 的数据。我想获取这些数据的一部分并填写一个 Excel 表。我已经检查了许多将所有数据从 JSON 转储到 Excel 工作表的示例(使用 xlwt),但是如何仅针对 JSON 数据的一部分执行此操作?

这是我正在使用的脚本:

import requests 

def get_application_list():
    application_list_response = requests.get("https://graph.microsoft.com/beta/applications", verify=False,
                                             headers={"Authorization": "Bearer" + access_token})

    application_list_response_json = application_list_response.json()

    for item in application_list_response_json['value']:
        print("Application Name:", item['displayName'])
        print("Application ID:", item['id'])

get_application_list()

我想在 Excel 表中获取应用程序名称和应用程序 ID。示例输出:

P.S:我对 Python 很陌生。任何优化此代码的建议也会有所帮助。

谢谢!

【问题讨论】:

  • 请发帖minimal, complete, and verifiable example。所有关于记录和请求的东西完全无关紧要。重要的是样本输入和期望的输出。
  • 进行了必要的更改。谢谢。
  • 只需将其写入 CSV 或 TXT 文件,Excel 即可打开。

标签: python json excel parsing dictionary


【解决方案1】:

只需将其保存为 CSV 文件,然后您就可以在 M$ Excel 中打开它。

import csv
import requests 

def save_application_list(target_file):
    application_list_response = requests.get("https://graph.microsoft.com/beta/applications", verify=False,
                                             headers={"Authorization": "Bearer" + access_token})

    application_list_response_json = application_list_response.json()

    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['displayName', 'id'])
        writer.writeheader()
        writer.writerows(application_list_response_json['value'])

save_application_list('/path/to/your/saved/file.csv')

更新:

要将字段名称更改为['Application Name', 'Application ID'],只需将writer.writeheader() 更改为writerow(),如下所示:

def save_application_list(target_file):

    ...
    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['displayName', 'id'])
        writer.writerow({
            'displayName': 'Application Name',
            'id': 'Application ID'
        })
        writer.writerows(application_list_response_json['value'])
    ...

更新 2:

由于您在 JSON 文件中有其他不需要保留的字段,因此代码可以是这样的:

def save_application_list(target_file):

    ...
    with open(target_file, 'w') as fp:
        writer = csv.DictWriter(fp, ['Application Name', 'Application ID'])
        writer.writeheader()
        writer.writerows({
            'Application Name': item['displayName'],
            'Application ID': item['id']
        } for item in application_list_response_json['value'])

    ...

【讨论】:

  • 我投了赞成票,但字段名应该是['Application Name', 'Application ID']
  • ValueError: dict 包含不在字段名中的字段:'publisherDomain'、'allowPublicClient'、'requiredResourceAccess'、'api'、'installedClients'、'orgRestrictions'、'applicationAliases'、'deletedDateTime'、' appRoles', 'keyCredentials', 'passwordCredentials', 'createdDateTime', 'tags', 'info', 'web', 'preAuthorizedApplications' 我想这是因为我没有使用'value'中的其他字段。
  • 无法解决这个问题。现在尝试不同的方法。从 JSON 数据创建子字典并尝试将此字典数据写入 csv 文件。谢谢!
猜你喜欢
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2020-10-08
  • 2023-04-10
相关资源
最近更新 更多