如何在Jupyter Notebook中用Python将tweets.js转为Pandas DataFrame
解决步骤
1. 安装依赖
如果还未安装flatten-json,先执行安装命令:
pip install flatten-json
2. 读取并预处理tweets.js
tweets.js开头带有JavaScript变量声明(如window.YTD.tweets.part0 = ),需要先剥离这段非JSON内容,提取纯数据数组:
import json import pandas as pd from flatten_json import flatten # 读取本地文件 with open("tweets.js", "r", encoding="utf-8") as file: raw_text = file.read() # 剥离前缀,获取纯JSON字符串 json_str = raw_text.split(" = ")[1].rstrip(";") # 解析为Python列表 tweets_data = json.loads(json_str)
3. 扁平化嵌套结构
推文数据存在多层嵌套,使用flatten工具将每条推文的嵌套字段展开为扁平键值对:
flattened_tweets = [flatten(tweet) for tweet in tweets_data]
4. 转换为Pandas DataFrame
将扁平化后的列表直接转为DataFrame:
df = pd.DataFrame(flattened_tweets) # 验证结果 df.head()
错误原因解析
pd.read_json()失败:tweets.js不是标准JSON文件,开头的JavaScript变量声明会导致解析失败,且嵌套结构也无法被直接处理。json.dumps('tweets.json')用法错误:json.dumps()的作用是将Python对象转换为JSON字符串,你传入的是文件名字符串,得到的是"tweets.json"这个纯字符串,而非文件的JSON内容,因此无法被flatten_json处理。正确的做法是先读取文件内容,用json.loads()解析为Python对象后再进行扁平化操作。
内容的提问来源于stack exchange,提问作者yoni chanowitz
相关产品推荐
相关产品推荐

