json - 合并多个 JSON 文件,并解析成 CSV
问题描述
我有大约 100 个 JSON 文件,所有文件都以不同的日期命名,我需要将它们合并到一个 CSV 文件中,该文件具有标题“日期”、“真实姓名”、“文本”。
JSON 本身没有列出日期,并且 real_name 是嵌套的。我有一段时间没有使用 JSON 了,有点迷茫。
JSON 的基本结构或多或少是这样的:
文件名:2021-01-18.json
[
{
"client_msg_id": "xxxx",
"type": "message",
"text": "THIS IS THE TEXT I WANT TO PULL",
"user": "XXX",
"user_profile": {
"first_name": "XXX",
"real_name": "THIS IS THE NAME I WANT TO PULL",
"display_name": "XXX",
"is_restricted": false,
"is_ultra_restricted": false
},
"blocks": [
{
"type": "rich_text",
"block_id": "yf=A9",
}
]
}
]
到目前为止我有
import glob
read_files = glob.glob("*.json")
output_list = []
all_items = []
for f in read_files:
with open(f, "rb") as infile:
output_list.append(json.load(infile))
data = {}
for obj in output_list[]
data['date'] = f
data['text'] = 'text'
data['real_name'] = 'real_name'
all_items.append(data)
解决方案
读取 JSON 对象后,只需将数据编入字典即可。如果您的 JSON 数据确实在每个文件的列表中,您可能需要obj[0]['text']
等,但这看起来很奇怪,我假设您的数据是output_list
在您收集数据之后粘贴的。因此,假设您的文件内容完全如下:
{
"client_msg_id": "xxxx",
"type": "message",
"text": "THIS IS THE TEXT I WANT TO PULL",
"user": "XXX",
"user_profile": {
"first_name": "XXX",
"real_name": "THIS IS THE NAME I WANT TO PULL",
"display_name": "XXX",
"is_restricted": false,
"is_ultra_restricted": false
},
"blocks": [
{
"type": "rich_text",
"block_id": "yf=A9",
}
]
}
测试.py:
import json
import glob
from pathlib import Path
read_files = glob.glob("*.json")
output_list = []
all_items = []
for f in read_files:
with open(f, "rb") as infile:
output_list.append(json.load(infile))
data = {}
for obj in output_list:
data['date'] = Path(f).stem
data['text'] = obj['text']
data['real_name'] = obj['user_profile']['real_name']
all_items.append(data)
print(all_items)
输出:
[{'date': '2021-01-18', 'text': 'THIS IS THE TEXT I WANT TO PULL', 'real_name': 'THIS IS THE NAME I WANT TO PULL'}]
推荐阅读
- bash - 根据 bash 中的计数变量构造命令
- qt - qml 中的日历(DaysofWeek)
- haskell - 如何跨模式匹配执行 where 子句
- java - 初始化数组列表时出现Java nullpointerException
- google-sheets - 左侧 Google 工作表上的修剪空间
- json - 由于大量文件中的无效字符,mongoimport 失败,可能是字符编码问题
- excel - VBA:我的条件 ElseIf 与 <= 运算符在预期时没有返回 true
- python - QGIS 3.12.3 - 启动 Python 错误:无法加载 SIP 模块
- node.js - 在 NodeJs 中处理缓慢的请求
- python - 如何调整误差线的水平线?