我需要一个python REGEX由分隔符(开始,结束),可以有多次出现拆分文件[关闭]

问题描述 投票:0回答:2

我使用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)以上。

我会很感激,如果你能帮助我。

谢谢

python regex
2个回答
-1
投票

您可以使用这样的:

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


0
投票

您可以使用re.findallre.DOTALL标志,让.匹配换行,并与re.MULTILINE标志,让^$相匹配的开始和行结束,假设输入文件的内容存储在变量content

re.findall('^BEGIN$.*?^END$', content, flags=re.DOTALL | re.MULTILINE)
© www.soinside.com 2019 - 2024. All rights reserved.