如何解析文本文件提取点号后的唯一值生成去重列表
实现方案
整个逻辑拆成3个核心步骤即可:
- 读取全部待解析的文本内容,支持直接传入字符串或者读取本地txt文件内容
- 匹配所有紧跟在英文
.后面的英文字段,自动过滤重复内容 - 按字段首次出现的顺序整理成最终列表
Python 可直接运行的实现代码
import re # 原始待解析文本,需要读本地文件时替换这部分逻辑即可 raw_content = """If MARA.MTART in ('ZPLW', 'ZFTW'), then MARA.PSTAT like '%K%' If MARA.MTART in ('ZPLW', 'ZFTW'), then MARA.MATKL = '99999999' """ # 正则提取点号后的连续字段名 find_result = re.findall(r'\.([A-Za-z0-9_]+)', raw_content) # 去重并保留字段首次出现的顺序 final_list = list(dict.fromkeys(find_result)) print(final_list)
运行后输出结果完全符合预期:
['MTART', 'PSTAT', 'MATKL']
关键说明
- 正则规则
r'\.([A-Za-z0-9_]+)'只会捕获.后面连续的字母、数字、下划线组成的字段名,不会把点号或者其他无关符号带进结果 - 如果不需要保留字段出现顺序,去重部分可以简化成
list(set(find_result)),只是输出顺序会随机 - 读取本地txt文件的替换逻辑参考:
# 把括号里的路径换成你自己的文本文件实际存储路径 with open('rule.txt', 'r', encoding='utf-8') as f: raw_content = f.read()
内容的提问来源于stack exchange,提问作者Owen
相关产品推荐
相关产品推荐

