Удалить часть текста при помощи python

Удалить часть текста при помощи python


Есть текст:

['Розенфельд А.С.']
#920: ASP
#900: ^B08
#200: ^AПрофессионально-прикладная физическая подготовка студентов аграрного вуза
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S3-3^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****
['Цихалевский И.С.', 'Буйносов А.П.']
#920: ASP
#900: ^B08
#200: ^AОрганизация эксплуатации, обслуживания и ремонта газотурбовозов гт1h
#102: RU
!!!!!!!!!!!!!!!!!!!!!!!!!
#1107: ^F1^J0^R0^S0^W0^Z0
#463: ^CВестник Уральского государственного университета путей сообщения^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный университет путей сообщения"^DЕкатеринбург^S43-55^HN 3 (39)
#1105: Статья в журнале
#963: ^I2079-0392
*****
['Некрасов К.В.']
#920: ASP
#900: ^B08
#200: ^AИнновационная деятельность организаций отрасли
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S28-28^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****

Нужно удалить часть текста с "!!!!!!!!!!"(восклицательными знаками). Желаемый результат:

['Розенфельд А.С.']
#920: ASP
#900: ^B08
#200: ^AПрофессионально-прикладная физическая подготовка студентов аграрного вуза
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S3-3^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****
['Некрасов К.В.']
#920: ASP
#900: ^B08
#200: ^AИнновационная деятельность организаций отрасли
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S28-28^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
****

Попыталась сделать при помощи регулярного выражения:

import chardet
import re

with open('АРМ.txt', 'rb') as file:
    file_read = file.read()
    result = chardet.detect(file_read)
    f = file_read.decode(result['encoding'])
    print(f)

items = re.sub('*****[^>]+*****', '', f)
print(items)

Но выходит ошибка:

re.error: nothing to repeat at position 0

Подскажите, пожалуйста, как можно удалить часть текста? Заранее благодарна за ответ.

Ответ:

* спец-символ регулярок. Чтобы указать в шаблоне именно символ *, нужно экранировать его: \*.

А чтобы удалить:

...

import re
new_text = re.sub('\*{5}.+!+.+?\*{5}', '*****', text, flags=re.DOTALL)
print(new_text)

PS.

  • \*{5} - для поиска *****
  • !+ - для поиска набора с восклицательными знаками. По условию попадет от одного восклицательного знака, до сколько угодного.
  • .+?\*{5} - ленивый поиск до следующего набора *****

PPS.

Полный пример:

text = """\
['Розенфельд А.С.']
#920: ASP
#900: ^B08
#200: ^AПрофессионально-прикладная физическая подготовка студентов аграрного вуза
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S3-3^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****
['Цихалевский И.С.', 'Буйносов А.П.']
#920: ASP
#900: ^B08
#200: ^AОрганизация эксплуатации, обслуживания и ремонта газотурбовозов гт1h
#102: RU
!!!!!!!!!!!!!!!!!!!!!!!!!
#1107: ^F1^J0^R0^S0^W0^Z0
#463: ^CВестник Уральского государственного университета путей сообщения^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный университет путей сообщения"^DЕкатеринбург^S43-55^HN 3 (39)
#1105: Статья в журнале
#963: ^I2079-0392
*****
['Некрасов К.В.']
#920: ASP
#900: ^B08
#200: ^AИнновационная деятельность организаций отрасли
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S28-28^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****
"""

import re
new_text = re.sub('\*{5}.+!+.+?\*{5}\n', '', text, flags=re.DOTALL)
print(new_text)

Консоль:

['Розенфельд А.С.']
#920: ASP
#900: ^B08
#200: ^AПрофессионально-прикладная физическая подготовка студентов аграрного вуза
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S3-3^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****
['Некрасов К.В.']
#920: ASP
#900: ^B08
#200: ^AИнновационная деятельность организаций отрасли
#102: RU
#1107: ^F0^J0^R0^S0^W0^Z0
#463: ^CАграрное образование и наука^J2018^GФедеральное государственное бюджетное образовательное учреждение высшего образования "Уральский государственный аграрный университет"^DЕкатеринбург^S28-28^HN 4
#1105: Статья в журнале
#963: ^I2309-7671
*****


Report Page