如何使用Python清理目录文本 精准提取目标条目标题
基于正则的法案目录提取方案
你描述的提取需求完全可以通过Python内置的re正则模块实现,不需要写嵌套逐字符遍历的逻辑,正则天生适合处理这类固定边界的字符串截取场景,代码简洁且识别准确率更高。
实现思路
- 逐行遍历目录文件内容,自动跳过不包含
An act标识的分类大标题行 - 对有效法案行做双边界截取:
- 左边界:以
An act字符串为起点,丢弃其前面所有缩进、分类编号、前缀文字 - 右边界:以第一个英文句点为截止点,丢弃后面所有连续省略号、页码等无关内容
- 左边界:以
- 提取完成后去除内容首尾空白,逐条输出即可
可直接复用的代码
import re # 正则匹配规则 extract_pattern = re.compile(r'An act.*?(?=\.)') # 替换为你的目录文件实际路径 with open("toc_source.txt", "r", encoding="utf-8") as f: for line in f: line = line.strip() match_result = extract_pattern.search(line) if match_result: clean_title = match_result.group() print(clean_title)
适配特殊场景的调整方案
如果遇到法案标题本身就包含单个句点的情况,上述规则会提前截断,你可以把右边界的匹配规则改成识别连续2个及以上的省略号点,调整后的正则规则如下,适配性更强:
extract_pattern = re.compile(r'An act.*?(?=\.{2,})')
内容的提问来源于stack exchange,提问作者fjturner
相关产品推荐
相关产品推荐

