Python使用Regex从CSV格式Tweet数据中提取消息内容
问题根因
- 代码未导入
re模块,直接调用re.findall会直接触发运行报错 - 正则规则存在语法错误:匹配数字的元字符是
\d而非/d,且该规则只能匹配到推特链接后的id,完全无法定位到你需要的content字段 - 第二段代码直接将文件名字符串传入匹配函数,没有读取文件实际内容,不可能得到预期结果
- CSV是结构化格式,强行用正则匹配很容易因为content内部包含逗号、换行等特殊字符导致匹配错误,更推荐用Python内置的csv模块处理
方案1:使用csv模块提取(推荐)
该方案会自动适配CSV的转义规则,哪怕content中包含逗号、引号也能正确提取,不需要自行编写匹配逻辑:
import csv with open("tweets.csv", "r", encoding="utf-8") as f: # 直接读取表头映射为字典键 reader = csv.DictReader(f) for row in reader: content = row["content"] print(content)
方案2:正则实现(仅适用于content不含逗号的场景)
如果确定你的所有推特content中都没有逗号,可以用正则按字段位置匹配:
import re with open("tweets.csv", "r", encoding="utf-8") as f: # 跳过第一行表头 next(f) for line in f: # 捕获第三个逗号分隔的字段内容 match_res = re.match(r"[^,]+,[^,]+,([^,]+),", line) if match_res: content = match_res.group(1) print(content)
内容的提问来源于stack exchange,提问作者Stephen
相关产品推荐
相关产品推荐

