如何在Python中合并两个JSON文件并为文本添加分类标记
正确合并两个JSON文本文件并添加标签的Python实现
先聊聊你原脚本里的几个问题哈:
- 遍历文件的方式不对,
for linePos,lineNeg in positiveFile,negativeFile这种写法没法实现逐行读取两个文件的内容,它会把文件对象当成迭代项处理,完全不是你想要的逐行配对读取逻辑 - 变量名写错了!解析正样本后存在
distros_dictPos里,但后面调用的时候写成了distros_dict['text'],负样本也犯了同样的错误,这肯定会触发NameError - 没有用安全的文件处理方式,直接
open文件如果忘记关闭会有资源泄漏风险,推荐用with语句自动管理文件生命周期 - 输出格式完全没贴合需求,你需要给正样本加
1,前缀、负样本加0,前缀,还要把文本用引号包裹起来
下面是修正后的完整代码,完全匹配你的需求:
import json # 处理正样本文件(添加1,前缀) with open('train_posi_tweets_2017.txt', 'r', encoding='utf-8') as positive_file: for line in positive_file: # 去除行首尾空白字符,避免JSON解析出错 line = line.strip() if not line: continue try: tweet_data = json.loads(line) # 按要求格式输出内容 print(f'1,"{tweet_data["text"]}"') except json.JSONDecodeError as e: print(f"解析正样本行出错: {e}") # 处理负样本文件(添加0,前缀) with open('train_nega_tweets_2017.txt', 'r', encoding='utf-8') as negative_file: for line in negative_file: line = line.strip() if not line: continue try: tweet_data = json.loads(line) print(f'0,"{tweet_data["text"]}"') except json.JSONDecodeError as e: print(f"解析负样本行出错: {e}")
代码说明:
- 用
with语句打开文件,代码块结束后文件会自动关闭,安全又省心 - 逐行读取文件内容,先去除行首尾的空白(比如换行符、空格),避免解析JSON时触发格式错误
- 加入了异常处理,如果某一行JSON格式有问题,会打印错误信息而不是直接崩溃
- 使用f-string格式化输出,完美实现你想要的
1,"文本内容"和0,"文本内容"格式
运行这段代码后,你会得到和期望完全一致的输出:
1,"PAKIS RAPE KIDS: Mexico police in college raids: Vehicles are set ablaze and more than 120 peo... @Ewok_League #edl" 1,"Bullfighting sparks animal rights protests in Mexico - video - The Guardian " 0,"@TheArkham No crea que me olvido de los amigos,espero todo este marchando bien, un abrazo." 0,"Avisale al IFE Que #SiDragonBallFueraMexicano Le hubiera dado a Noe Hernandez Semillas Del Ermitaño (ESO HUBIERA SIDO ESTUPENDO. QEPD)"
内容的提问来源于stack exchange,提问作者Viral Patel
相关产品推荐
相关产品推荐

