Я хотел бы преобразовать следующий текст:
some text
% comment line 1
% comment line 2
% comment line 3
some more text
в
some text
"""
comment line 1
comment line 2
comment line 3
"""
some more text
И в том же файле, когда есть только одна закомментированная строка, я хотел бы, чтобыперейти от
some text
% a single commented line
some more text
к
some text
# a single commented line
some more text
Итак, когда два дела находятся в одном файле, я бы хотел перейти от:
some text
% comment line 1
% comment line 2
% comment line 3
some more text
some text
% a single commented line
some more text
к
some text
"""
comment line 1
comment line 2
comment line 3
"""
some more text
some text
# a single commented line
some more text
То, что я пробовал до сих пор, для второго случая работает как:
re.sub(r'(\A|\r|\n|\r\n|^)% ', r'\1# ', 'some text \n% a single comment line\nsome more text')
, но заменяет %
на #
также, когда есть несколько прокомментированных строк.
Что касается второго случая, я потерпел неудачу с:
re.sub(r'(\A|\r|\n|\r\n|^)(% )(.*)(?:\n^\t.*)*', r'"""\3"""', 'some text \n% comment line1\n% comment line 2\n% comment line 3\nsome more text')
, который повторяет """
в каждой строке и конфликтует со случаем, когда комментируется только одна строка.
Есть ли способ подсчитать последовательные строки, в которых найдено регулярное выражение, и соответственно изменить шаблон?
Заранее спасибо за помощь!