如何使用正则表达式从大型TXT文件中提取多行模式字符串并写入独立文件?
没问题!用正则表达式搭配Python就能轻松搞定这个提取需求,我给你整理了一套完整的可落地方案:
解决方案思路
我们可以用正则表达式精准匹配每个以RIG开头的片段,再用Python脚本自动将每个片段写入对应的独立文件——既高效又能保证准确性。
正则表达式说明
这里的核心正则是:
RIG.*?(?=RIG|$)
RIG:匹配片段的起始标识.*?:非贪婪模式匹配任意字符(避免一次性匹配到文件结尾)(?=RIG|$):正向预查,确保匹配到下一个RIG之前就停止,或者匹配到文件结尾(处理最后一个片段)- 加上
re.DOTALL参数后,.会包含换行符,能兼容跨多行的RIG片段
Python代码实现
直接用下面的脚本就能完成提取工作:
import re # 替换成你的源文件路径 source_file = 'example.txt' # 读取源文件全部内容 with open(source_file, 'r') as f: content = f.read() # 编译正则表达式,开启DOTALL模式支持跨行匹配 rig_pattern = re.compile(r'RIG.*?(?=RIG|$)', re.DOTALL) # 提取所有符合要求的片段 rig_segments = rig_pattern.findall(content) # 遍历每个片段,生成对应文件 for segment in rig_segments: # 清理片段前后的空白(比如换行、多余空格) cleaned_segment = segment.strip() if not cleaned_segment: continue # 跳过空片段 # 生成文件名:取RIG后面的标识(比如"RIG 1C 0" → "RIG1C0.txt") # 分割前3个元素并拼接,确保文件名符合你的需求 name_parts = cleaned_segment.split(maxsplit=3)[:3] output_filename = ''.join(name_parts) + '.txt' # 写入文件 with open(output_filename, 'w') as output_file: output_file.write(cleaned_segment) print(f"✅ 已生成文件: {output_filename}")
使用步骤
- 把上面的代码保存为
extract_rig.py,和你的example.txt放在同一个文件夹里 - 打开终端/命令行,进入该文件夹,运行命令:
python extract_rig.py - 完成后,你就能看到每个
RIG片段对应的独立文件了
注意事项
- 如果你的源文件编码不是默认的UTF-8,可以在
open()函数里加上encoding='xxx'参数(比如encoding='gbk') - 如果
RIG后面的标识格式有变化,可以调整name_parts的分割逻辑来适配你的需求
内容的提问来源于stack exchange,提问作者Glammy
相关产品推荐
相关产品推荐

