我使用Python。我想分裂,通过使用分隔符“BEGIN”和“END”含有n个部分的文件。
该文件包含:
BEGIN
ABC ABC ABC
END
BEGIN
XYZ
XYZ
END
BEGIN
A B C
END
通过上面的文件,我想有作为输出:
文件1:
BEGIN
ABC ABC ABC
END
文件2:
BEGIN
XYZ
XYZ
END
文件3:
BEGIN
A B C
END
我认为这是可以用正则表达式来完成,但我一直没能找到,将确定的3组模式的例子(BEGIN ... END)以上。
我会很感激,如果你能帮助我。
谢谢
您可以使用这样的:
import re
with open('original.txt') as f:
s = f.read()
m = re.findall("BEGIN.*?END", s, re.DOTALL)
n = 1
for x in m:
with open(f"{n}.txt", "w", encoding='utf8' ) as f:
f.write(x)
n+=1
上面的代码将创建3个文件
1.txt
2.txt
3.txt
包含文本BEGIN ... END
。
您可以使用re.findall
与re.DOTALL
标志,让.
匹配换行,并与re.MULTILINE
标志,让^
和$
相匹配的开始和行结束,假设输入文件的内容存储在变量content
:
re.findall('^BEGIN$.*?^END$', content, flags=re.DOTALL | re.MULTILINE)