你只能通过.replace()做你想做的事.从
BeautifulSoup documentation on NavigableString:
You can’t edit a string in place, but you can replace one string with another, using 07001.
这正是你需要做的;获取每个匹配项,然后在包含的文本上调用.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)