从DataFrame提取英文单词存入列表返回空列表,如何解决?
问题分析与解决方法
原代码的问题
- 错误使用
==匹配正则表达式:==是精确字符串匹配,无法识别正则规则,你的条件永远不会成立,因此列表始终为空。 - 逻辑错误:就算条件成立,代码直接把整个
Subject列转成列表,并没有提取每个元素里的英文单词。
正确实现方式
用Python的re模块提取每个字符串中符合规则的英文单词,再汇总到目标列表中。
代码示例
import re import pandas as pd englishSubject = [] # 匹配包含字母、可前后带数字的英文单词 pattern = r'\b[0-9]*[A-Za-z]+[0-9]*\b' for text in df['Subject']: # 转成str避免非字符串类型(如NaN)报错,提取所有符合规则的单词 words = re.findall(pattern, str(text)) # 将提取到的单词合并到总列表 englishSubject.extend(words) # 可选操作:如果需要去重的单词列表 englishSubject = list(set(englishSubject))
代码说明
re.findall(pattern, str(text)):遍历每个Subject字段,提取所有符合正则规则的单词,转成str是为了兼容字段中的非字符串类型。extend(words):把每个字段提取到的单词列表合并到总列表,而非覆盖原有内容。- 去重步骤:如果需要唯一的单词集合,用
list(set(...))处理即可。
内容的提问来源于stack exchange,提问作者user19706373
相关产品推荐
相关产品推荐

