#python #substitution #re
#python #замена #python-re
Вопрос:
я хотел бы заменить приведенные ниже строки на,
ABC ::A1
CDE :A1A1A1
Ожидаемый результат:
ABC ::A1
TIM 2020:11:21:12:51 ZZZ
ABC ADDEDTIME
CDE :A1A1A1
Я хотел бы добавить следующие строки между двумя вышеупомянутыми строками. Пожалуйста, обратите внимание, что из приведенных выше строк A1 / A1A1A1 — это переменная, которая будет продолжать меняться, но первые три альфа-символа останутся прежними. Следовательно, независимо от того, что указано после двоеточия ( ::), необходимо добавить следующие две строки,
Строки, которые нужно добавить
TIM 2020:11:21:12:51 ZZZ
ABC ADDEDTIME
Комментарии:
1. прочитайте построчно и сохраните буфер из последних 2 строк для чтения и проверьте, соответствуют ли последние 2 строки вашему тестовому сценарию, и если да, выведите несколько дополнительных строк
Ответ №1:
Мы могли бы эффективно использовать re, как показано ниже:
import re
regex = r"^(ABC ::[A-Z0-9] n)(?=^CDE :[A-Z0-9] )"
test_str = ("ABC ::A1n"
"CDE :A1A1A1")
subst = "\1TIM 2020:11:21:12:51 ZZZ\nABC ADDEDTIME\n"
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print(result)
Демонстрация регулярных выражений
По сути, шаблон регулярных выражений соответствует ABC ::ALPHANUM{1 или более}, за которым следует CDE :ALPHANUM{1 или более}, и заменяет первое совпадение в скобках обратно и добавляет разрывы строк и новые строки после него.