如何使用REGEX从列表元素中仅提取英文字母?
代码修正方案
你原来的代码存在两个核心问题:
- 方法使用错误:
filter的作用是筛选列表中符合条件的元素,不会修改元素本身的内容,而你的需求是对每个元素的内容做清洗,提取其中的英文字母。你原来的代码运行后会输出和原列表一致的结果,就是因为两个元素的首字符都是非数字,都被filter保留了,但内容完全没修改。 - 正则规则不符合需求:
\D匹配所有非数字字符,包含空格,达不到仅保留英文字母的要求。
修正后的可运行代码
import re text = ['aQx12', 'aub 6 5'] # 遍历每个字符串,提取所有英文字母后拼接成新内容 newlist = [''.join(re.findall(r'[a-zA-Z]', s)) for s in text] print(newlist)
运行输出正好符合预期:['aQx', 'aub']
补充说明
[a-zA-Z]是匹配大小写英文字母的专用正则规则,re.findall会把单个字符串中所有匹配的字符都提取出来,用join拼接成完整字符串就能得到你要的清洗后的结果。
内容的提问来源于stack exchange,提问作者leena
相关产品推荐
相关产品推荐

