如何加载Health-News-Tweets.zip中train文件夹文件并解决代码报错?
问题原因及修复方案
1. 直接报错原因
你定义路径的代码里,格式字符串"./Health-News-Tweets/%s/%s"包含2个%s占位符,但仅传入了1个参数s,参数数量不匹配才抛出该TypeError。你的数据集目录结构是Health-News-Tweets下直接分test、train两个子目录,所以路径只需要1个占位符即可。
2. 其他隐藏问题修正
除了路径报错外,现有代码还有几处逻辑问题会导致后续无法正常提取推文:
- 直接把整个文件的内容作为单条数据追加到DataFrame,没有按行拆分每条推文,也没有按
|分隔三列 - 每次追加数据后都重复修改DataFrame列名,执行效率低
- Pandas的
append方法已经在高版本中废弃,建议使用pd.concat替代
3. 修改后完整代码
import pyprind import pandas as pd import os # 初始化进度条,可根据实际文件数量调整数值 progBar = pyprind.ProgBar(3000) # 提前指定列名 df = pd.DataFrame(columns=['ID', 'Timestamp', 'Tweet']) for s in ('test', 'train'): # 修正路径格式,仅需要1个占位符 path = "./Health-News-Tweets/%s" % s for file in os.listdir(path): file_path = os.path.join(path, file) # 按行读取文件,每行是一条推文 with open(file_path, 'r', encoding='utf-8') as infile: for line in infile: line = line.strip() if not line: continue # 按|拆分三列,maxsplit=2避免推文内容里的|影响拆分结果 parts = [p.strip() for p in line.split('|', maxsplit=2)] if len(parts) == 3: # 组装单行数据,拼接到总DataFrame row = pd.DataFrame([parts], columns=df.columns) df = pd.concat([df, row], ignore_index=True) progBar.update() # 提取推文列直接调用即可 tweet_col = df['Tweet']
内容的提问来源于stack exchange,提问作者Ruchir Mandora
相关产品推荐
相关产品推荐

