Я пытаюсь заменить некоторый контент из текста и удалить его.Используя subn, я хочу как заменить, так и следить за тем, что было подставлено.
Весь мой код:
# -*- coding: UTF-8 -*-
import re
regex = re.compile(r'\<begin_block\>(.*?)\</end_block\>', re.MULTILINE | re.DOTALL)
test_str = ("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id lacus dapibus, sollicitudin nunc ut, posuere nisl. Fusce varius mi eros, eu euismod urna congue a. <begin_block> Some content here </end_block>Integer posuere tempor nulla eget commodo. Mauris iaculis vehicula nisi pretium interdum. Curabitur nec quam vel eros malesuada congue nec eget ipsum. \n"
"<begin_block>\n"
"Hello world!\n"
"</end_block>\n"
"Vivamus aliquam lectus sapien, eget cursus libero congue sed. Mauris nulla metus, dictum ut semper non, sagittis non ipsum. Etiam fermentum pharetra aliquet. Morbi bibendum nulla quam, vitae vestibulum arcu bibendum a. Maecenas eget est vitae elit rhoncus scelerisque. Aliquam sagittis, ligula quis porttitor congue, ex nisi aliquam diam, ac ullamcorper quam lectus non est. \n"
"<begin_block>\n"
"##########\n"
"</end_block>")
matches = re.finditer(regex, test_str)
for matchNum, match in enumerate(matches, start=1):
print("Match {matchNum} was found: {match}".format(matchNum=matchNum,
match=match.group()))
string, num = re.subn(regex, r'\n', test_str)
Может кто-нибудь объяснить, что я делаю неправильно, я не вижу этого?
РЕДАКТИРОВАТЬ: После комментариев,
Например, если я ищу "<begin_block>
", он все равно находит все 3 тега, несмотря на то, что я запустил на них subn.Вот почему я не понимаю, что я делаю неправильно.
РЕДАКТИРОВАТЬ 2: После дополнительных комментариев,
Я попробовал это, изменил последние строки к этому:
for matchNum, match in enumerate(matches, start=1):
string, num = re.subn(match.group(), r'\n', test_str)
print(string)
Мои результатысодержимое не подставляется должным образом:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam id lacus dapibus, sollicitudin nunc ut, posuere nisl. Fusce varius mi eros, eu euismod urna congue a. <begin_block> Some content here </end_block>Integer posuere tempor nulla eget commodo. Mauris iaculis vehicula nisi pretium interdum. Curabitur nec quam vel eros malesuada congue nec eget ipsum.
<begin_block>
Hello world!
</end_block>
Vivamus aliquam lectus sapien, eget cursus libero congue sed. Mauris nulla metus, dictum ut semper non, sagittis non ipsum. Etiam fermentum pharetra
aliquet. Morbi bibendum nulla quam, vitae vestibulum arcu bibendum a. Maecenas eget est vitae elit rhoncus scelerisque. Aliquam sagittis, ligula quis porttitor congue, ex nisi aliquam diam, ac ullamcorper quam lectus non est.