如何用Python拆分full change.txt中A1-A300内容并追加到对应文件?
Python实现从full change.txt拆分内容追加到对应A1-A300.txt文件
直接用正则表达式匹配每个Ax对应的内容块是最稳妥的方案,比split更适配你这种带动态标识的内容结构。以下是可直接运行的代码:
import re # 读取源文件全部内容 with open('full change.txt', 'r', encoding='utf-8') as source_file: full_content = source_file.read() # 正则匹配每个Ax的内容块:适配"If ***** Begin ****[内容]Ax End Go"格式 # re.DOTALL 让.匹配换行符,支持多行内容块 match_pattern = re.compile(r'If \*\*\*\*\* Begin \*\*\*\*\*(.*?)(A\d+) End Go', re.DOTALL) all_blocks = match_pattern.findall(full_content) # 遍历每个匹配到的块,追加写入对应文件 for block_content, file_tag in all_blocks: target_file_path = f"{file_tag}.txt" with open(target_file_path, 'a', encoding='utf-8') as target_file: # 可选:添加换行分隔,避免新追加内容和原有内容连在一起 target_file.write(block_content.strip() + '\n\n')
关键说明
正则表达式适配:
- 如果你文件里的
*****不是5个星号,或者Begin前后的空格有差异,直接调整正则里的\*\*\*\*\*和空格部分即可 .*?是非贪婪匹配,确保每个块只会匹配到对应Ax的End Go为止,不会把多个块合并
- 如果你文件里的
文件操作细节:
- 使用
'a'模式打开目标文件,确保是追加写入,不会覆盖原有内容 - 指定
encoding='utf-8'避免中文等特殊字符乱码,若你的文件是其他编码(比如gbk),替换成对应编码即可 block_content.strip()会去掉内容块前后的空白字符,按需保留或删除这部分
- 使用
替代思路(如果正则不适用):
若坚持用split,可以先按If ***** Begin ****拆分所有块,再遍历每个块提取Ax标识和内容,但正则的可读性和稳定性更高。
内容的提问来源于stack exchange,提问作者Ganny Entmt
相关产品推荐
相关产品推荐

