如何使用Python正则表达式从CSV行数据中提取逗号分隔的小写字母序列
正则表达式填写方案
???处填写的正则为:r'\b[a-z]+(?:,[a-z]+)*\b'
规则说明
\b匹配单词边界,避免匹配到行末键值对中的无效片段[a-z]+匹配至少1个小写字母,对应序列中的单个元素(?:,[a-z]+)*为非捕获组,匹配0次或多次「逗号+小写字母序列」的组合,覆盖所有后续元素,不会出现漏匹配最后一个元素的问题
代码修正说明
你现有的代码存在两处需要调整的地方:
- 正则匹配后拿到的是序列字符串(如
b,g,f),需要调用split方法拆分为列表 - 代码中
b变量未定义,需要处理匹配结果后再追加到列表
修正后的完整代码如下:
import re list_sequence = [] with open("data.csv", "r") as file: lines = file.readlines() for line in lines: match_res = re.findall(pattern=r'\b[a-z]+(?:,[a-z]+)*\b', string=line) # 过滤出包含逗号的匹配结果,即为目标序列 target_str = [s for s in match_res if ',' in s][0] list_sequence.append(target_str.split(',')) # 输出验证 for seq in list_sequence: print(seq)
运行后输出结果和你预期一致:
['b', 'g', 'f'] ['a', 'f', 'c', 'd']
内容的提问来源于stack exchange,提问作者Luis Alejandro Vargas Ramos
相关产品推荐
相关产品推荐

