Удалить часть текста при помощи 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 *****