You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现类似PowerShell的JSON顶层属性表格化输出?

在Python中模拟PowerShell式的JSON顶层属性表格输出

要实现PowerShell调用sec.gov API后那种只展示顶层属性+值的简要表格效果,核心就是两步:提取JSON的顶层键值对,把数组、嵌套对象这类复杂值转换成简短的摘要,再整理成规整的表格。下面给两种实用的实现方式:

方法1:手动生成表格(无需额外依赖)

不需要装任何第三方库,自己处理值的摘要和表格格式,灵活性更高:

import requests

# 调用sec.gov的API示例(以苹果公司的公司事实数据为例)
api_url = "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json"
# sec.gov要求必须设置User-Agent,替换成你的姓名和邮箱
headers = {"User-Agent": "Your Full Name your.email@example.com"}
response = requests.get(api_url, headers=headers)
json_data = response.json()

# 整理顶层属性的摘要信息
top_level_info = []
for key, value in json_data.items():
    # 根据值的类型生成简要显示内容
    if isinstance(value, list):
        display_value = f"[{len(value)} 条数据]"
    elif isinstance(value, dict):
        display_value = f"{{{len(value)} 个键}}"
    else:
        display_value = str(value)
    top_level_info.append( (key, display_value) )

# 计算列宽,让表格对齐
max_key_len = max(len(item[0]) for item in top_level_info) + 2
max_val_len = max(len(item[1]) for item in top_level_info) + 2

# 打印表格
print(f"{'属性名'.ljust(max_key_len)} | {'值摘要'.ljust(max_val_len)}")
print('-' * (max_key_len + max_val_len + 3))
for key, val in top_level_info:
    print(f"{key.ljust(max_key_len)} | {val.ljust(max_val_len)}")

方法2:用tabulate库快速生成表格

如果嫌手动调格式麻烦,可以用tabulate库一键生成各种样式的表格,先通过pip安装:

pip install tabulate

然后代码实现:

import requests
from tabulate import tabulate

api_url = "https://data.sec.gov/api/xbrl/companyfacts/CIK0000320193.json"
headers = {"User-Agent": "Your Full Name your.email@example.com"}
response = requests.get(api_url, headers=headers)
json_data = response.json()

# 准备表格行数据
table_rows = []
for key, value in json_data.items():
    if isinstance(value, list):
        val_summary = f"[{len(value)} 条数据]"
    elif isinstance(value, dict):
        val_summary = f"{{{len(value)} 个键}}"
    else:
        val_summary = str(value)
    table_rows.append( [key, val_summary] )

# 生成表格,tablefmt可选grid、plain、pretty等样式
print(tabulate(table_rows, headers=["属性名", "值摘要"], tablefmt="grid"))

注意事项

  • sec.gov的API强制要求设置User-Agent,必须包含你的真实姓名和邮箱,否则会返回403错误
  • 你可以根据需求调整值的摘要逻辑,比如嵌套字典可以显示几个关键键名,而不是只显示键的数量

内容的提问来源于stack exchange,提问作者dharmatech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:12:37