如何从JSON文件提取指定text字段内容并保存为CSV文件?
问题根因
你当前通过列位置索引取到的是嵌套列表结构的原始字段值,没有深入到结构内层提取text键内容;且硬编码列序号的取值方式鲁棒性极差,JSON字段顺序稍有变动就会取错数据。
你需要的text字段存储路径为:edge_media_to_caption.edges -> 列表首个元素 -> node -> text。
可直接运行的修正代码
import pandas as pd import json # 加载原始JSON数据 with open('shahd_yahia33.json', 'r', encoding='utf-8') as f: data = json.load(f) # 展平GraphImages层级的嵌套数据 df_graph = pd.json_normalize(data, record_path=['GraphImages']) # 定义嵌套结构提取函数,兼容无配文的空值场景 def get_text(edges): if not edges: return "" return edges[0].get('node', {}).get('text', "") # 提取纯文本列 result_df = pd.DataFrame() result_df['text'] = df_graph['edge_media_to_caption.edges'].apply(get_text) # 打印提取结果验证 print(result_df) # 保存为CSV文件,使用utf-8-sig编码避免Excel打开时表情、中文乱码 result_df.to_csv('caption_text.csv', index=False, encoding='utf-8-sig')
代码说明
- 直接通过展平后的字段名
edge_media_to_caption.edges定位目标列,不依赖列位置,稳定性更高 - 提取函数做了空值兼容,遇到没有配文的动态不会抛出键错误
- 保存CSV时指定
utf-8-sig编码,Windows系统下直接用Excel打开也不会出现乱码 - 最终输出的CSV文件仅包含一列纯文本内容,即所有帖子的配文字段
运行后输出示例
text 0 Good morning 1 🍑🍑 2 🤍🤍🤍 3 🍇🍑🍉 4 🤍🤍
内容的提问来源于stack exchange,提问作者yahya qusay mahdi
相关产品推荐
相关产品推荐

