在HTML中查找和替换字符串

Die*_*ego 1 html python beautifulsoup python-2.7

从这个HTML代码:

<p class="description" dir="ltr">Name is a fine man. <br></p>
Run Code Online (Sandbox Code Playgroud)

我正在寻找使用以下代码替换"名称":

target = soup.find_all(text="Name")
for v in target:
    v.replace_with('Id')
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

<p class="description" dir="ltr">Id is a fine man. <br></p>
Run Code Online (Sandbox Code Playgroud)

当我:

print target
[]
Run Code Online (Sandbox Code Playgroud)

为什么不找到"名字"?

谢谢!

har*_*r07 7

HTML中的文本节点除此之外还包含其他一些文本"Name".在这种情况下,您需要放宽搜索条件以使用包含而不是完全匹配,例如,使用正则表达式.然后你可以用原始文本替换匹配的文本节点,除了"Name"部分应该"Id"用简单的string.replace()方法替换,例如:

from bs4 import BeautifulSoup
import re

html = """<p class="description" dir="ltr">Name is a fine man. <br></p>"""
soup = BeautifulSoup(html)
target = soup.find_all(text=re.compile(r'Name'))
for v in target:
    v.replace_with(v.replace('Name','Id'))
print soup
Run Code Online (Sandbox Code Playgroud)

输出:

<html><body><p class="description" dir="ltr">Id is a fine man. <br/></p></body></html>
Run Code Online (Sandbox Code Playgroud)