Здравствуйте.
В настоящий момент имеется следующий код:
import re
SUBS = [
(r'(Шаг \d+)', r'[COLOR=orange][SIZE=7]\1[/SIZE][/COLOR]'),
(r'(^\d+.*$)', r'[COLOR=orange][SIZE=7]\1[/SIZE][/COLOR]'),
]
file = open('d:/text_sample.txt','r')
text = file.read()
def add():
for pattern, replacement in SUBS:
result = re.sub(pattern, replacement, text)
return result
file.close()
file1 = open('d:/text_sample.txt','w')
file1.write(add())
file1.close()
Как видите он берет первое значение каждого кортежа из списка в качестве паттерна для re.sub и второе значение - как заменитель для него же.
Первый вопрос: как нумеровать группы в подстановочных значениях?
Второй вопрос: можно ли использовать флаги компиляции (re.compile) или саму компиляцию? Если можно, то как?
Почему у меня возникает второй вопрос? Значения замены во второй строке изначально писались как самостоятельные и имели такой вид:
section_replace = re.compile(r'(^\d+.*$)', re.MULTILINE)
section_result = section_replace.sub(r'[COLOR=orange][SIZE=7]\1[/SIZE][/COLOR]', text)
То есть, используют флаг компиляции. Может быть, можно изменить выражение поиска на иное, без флага? Оно ищет заголовки разделов (выделено жирным):
1. Название пункта
Абзац с текстом
2. Название второго пункта
Абзац с текстом
и т.д.
По сути, показанный выше код в настоящий момент работает, только если удалить вторую строку из списка замен
Подскажите, пожалуйста, пути исправления. На всякий случай скажу, что в список замен в будущем возможны добавления (и я не уверен, что у них будут использоваться флаги компиляции, если это важно).
P.S. Python не знаю лишь чуть менее, чем совсем. Решение взято
отсюда.