Удалить повторяющуюся часть из текстового файла, не удаляя первое вхождение - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть текстовый файл, который выглядит следующим образом.

Имя: Python

Адрес: яблоко

Это образец текста.

Может начинаться с другого текста text2.

Конец

Здесь начинается файл ....

Что происходит

Да

abble

Имя: Python

Адрес: яблоко

Это другой текст.

Конец

Есть еще один материал, который написан.

Что мне делать.

Это

Что происходит

Я пытаюсь удалить все между Именем: и Концом, за исключением того, что держу все до Имени: и Конца

import re
with open('testfile.txt') as csvfiles: 
    data=csvfiles.read()

print (re.sub('Name.*?End','',data, flags=re.DOTALL))

Результат, который я ищу:

Имя: Python

Адрес: яблоко

Это образец текста.

Может начинаться с другого текста text2.

Конец Здесь начинается файл ....

Что происходит

Да

abble

Есть еще один материал, который написан.

Что мне делать.

Это

Что происходит

Что я получаю:

Здесь начинается файл ....

Что происходит

Да

abble

Есть еще один материал, который написан.

Что мне делать.

Это

Что происходит

Как сохранить 1-е вхождение от Имени до Конца и удалить все, что находится между Именем и Концом

Спасибо, Светило

1 Ответ

0 голосов
/ 26 апреля 2018

Возможно, это не самое быстрое решение, но вы можете использовать регулярное выражение, чтобы найти все вхождения вашего шаблона и заменить все, кроме первого, на ''.

Вот регулярное выражение, которое будет соответствовать вашему шаблону: (?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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...