我有一个看起来像这样的文本文件。
名称:Python
地址:apple
这是一个示例文本。
它可以从不同的文本文本开始。
结束
这是文件开始的地方....
发生了什么
是的
abble
名称:Python
地址:apple
这是一个不同的文字。
结束
还有另外一些内容。
我该怎么做。
此
发生了什么
我正在尝试删除Name:和End之间的所有内容,除了将所有内容保留在Name:和End
之前import re
with open('testfile.txt') as csvfiles:
data=csvfiles.read()
print (re.sub('Name.*?End','',data, flags=re.DOTALL))
我要找的结果是:
名称:Python
地址:apple
这是一个示例文本。
它可以从不同的文本文本开始。
结束 这是文件开始的地方....
发生了什么
是的
abble
还有另外一些内容。
我该怎么做。
此
发生了什么
我得到的是:
这是文件开始的地方....
发生了什么
是的
abble
还有另外一些内容。
我该怎么做。
此
发生了什么
如何将第一次出现从Name更改为End并删除Name:和End
之间的所有内容谢谢你, 发光
答案 0 :(得分:1)
可能不是最快的解决方案,但您可以使用正则表达式查找模式的所有出现,并使用''
替换除第一个之外的所有内容。
这是一个与您的模式匹配的正则表达式:(?m)^(Name[\s\S]*?End|\Z)
import re
with open('test.txt') as f:
data = f.read()
x = re.findall(r'(?m)^(Name[\s\S]*?End|\Z)', data)
for i in x[1:]:
data = data.replace(i, '')
print(data)
输出:
Name: Python
Address: apple
This is a sample text.
It could start with different text text2.
End
This is where file starts....
What is going on
Yeah
abble
There is another stuff that is written.
What should I do.
This
What is going on