Ответ 1
Вы не можете делать то, что хотите, только с помощью .replace()
. Из документации BeautifulSoup на NavigableString
:
Вы не можете отредактировать строку на месте, но вы можете заменить одну строку на другую, используя
replace_with()
.
Это именно то, что вам нужно сделать; возьмите каждое соответствие, затем вызовите .replace()
в содержащемся тексте и замените оригинал на это:
findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya'))
for comment in findtoure:
fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure')
comment.replace_with(fixed_text)
Если вы хотите использовать эти комментарии дальше, вам нужно будет сделать новую находку:
findtoure = commentary.find(text = re.compile('Yaya Toure'))
или, если вам все, что вам нужно, это результирующий текст unicode (так что не подключены NavigableString
объекты), просто соберите объекты fixed_text
:
findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya'))
fixed_comments = []
for comment in findtoure:
fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure')
comment.replace_with(fixed_text)
fixed_comments.append(fixed_text)