从文本文件中删除重复部分而不删除第一次出现

时间:2018-04-26 20:14:09

标签: python python-3.x python-2.7

我有一个看起来像这样的文本文件。

  

名称: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

之间的所有内容

谢谢你, 发光

1 个答案:

答案 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