python - 将多个 Twitter JSON 文件转换为一个 CSV
问题描述
我使用 Twitter API 抓取了大量 Twitter 数据。现在我将 JSON 文件存储在我的计算机上,我想将它们(大约 1000 个文件)组合成一个 csv 文件以进行进一步处理。
每个 JSON 文件如下所示:
200
{
"data": [
{
"author_id": "34571035",
"created_at": "2019-12-29T20:02:19.000Z",
"id": "1211376921407369216",
"text": "RT @ConnectedCarMag: Free online magazine for connected, autonomous and electric car professionals. Sign up 4 Connected Car mag #ConnectedC\u2026"
},
{
"author_id": "5946022",
"created_at": "2019-12-29T19:04:28.000Z",
"id": "1211362363351261184",
"text": "..."
},
...
我尝试了很多不同的代码来将 JSON 文件转换为单个 csv,但是当我尝试使用任何给定的代码时,我得到了以下任一错误代码:
JSONDecodeError:额外数据:第 2 行第 1 列(字符 4) JSONDecodeError:期望用双引号括起来的属性名称:第 2 行第 1 列(字符 2)ValueError:尾随数据
当我使用 pandas 将文件转换为 csv 时,我在使用 pd.read_json() 时已经遇到了问题。即使我尝试设置 lines=True,我什至无法在 Python 中将 JSON 文件作为 Dataframe 输入。
我对 Python 和整体编程非常陌生,因此非常感谢任何帮助。
解决方案
您的 json 无效,200
不应在开头。我会修改正在编写该部分的脚本。如果您愿意,您可以在 pandaspd.read_json(<json_variable_name>['data'])
中进行操作,但最简单的方法是使用以下函数:
import json
import csv
from typing import Dict, List, Union
# standard function I use for reading json files
def read_json(path: str) -> Union[Dict, List]:
with open(path, 'r') as file:
return json.load(file)
# standard function I use for writing list of dicts to csv
def write_csv(data: List[Dict], path: str) -> None:
with open(path, 'w') as file:
fields = set().union(*data)
writer = csv.DictWriter(file, fieldnames=fields, lineterminator='\n')
writer.writeheader()
writer.writerows(data)
json_data = read_json('your_file.json')
# write the json data (dictionary) to a csv
write_csv(json_data['data'], 'data.csv')
注意使用json_data['data']
部分['data']
访问"data"
json 响应的键值
推荐阅读
- kotlin - ktor sslConnector 从 jar p12 pkcs12 jks 密钥库和 mtls 相互 ssl 连接中服务/读取
- python - 如何在 Plotly 中为沿 x 轴的单个图选择箱线图颜色?
- python - 有没有办法在用户端重复来自 Google Directions API 的路线?
- php - Laravel nova - 如何在资源上编辑索引页面
- spring - 为实体连接表时 Spring Boot 应用程序的映射问题
- transloco - 如何使用 Transloco API 在 Angular 6+ 中存储语言代码
- php - 使用来自不同数组的键/值更新数组未正确合并
- linux - 仅使用“grep”命令获取特定列
- sql - 在 SQL Server 中删除然后添加超过 75000 行
- orocrm - 注册客户用户时发送确认电子邮件