用换行符修改 BeautifulSoup .string
Modifying a BeautifulSoup .string with line breaks
我正在尝试用 BeautifulSoup 更改 html 文件的内容。此内容将来自基于 python 的文本,因此它将有 \n 换行符...
newContent = """This is my content \n with a line break."""
newContent = newContent.replace("\n", "<br>")
htmlFile.find_all("div", "product").p.string = newContent
当我这样做时,html 文件 <p>
文本更改为:
This is my content <br> with a line break.
如何更改 BeautifulSoup 对象中的字符串并保持 <br>
中断?如果字符串只包含 \n
那么它会创建一个实际的换行符。
您需要创建单独的元素; 一个 文本包含在 <p>
标签中,而是一系列文本和 <br/>
元素。
而不是用文本 <br/>
替换 \n
换行符(这将被转义),拆分换行符上的文本并在其间插入额外的元素:
parent = htmlFile.find_all("div", "product")[0].p
lines = newContent.splitlines()
parent.append(htmlFile.new_string(lines[0]))
for line in lines[1:]:
parent.append(htmlFile.new_tag('br'))
parent.append(htmlFile.new_string(line))
这使用 Element.append()
method to add new elements to the tree, and using BeautifulSoup.new_string()
and BeautifulSoup.new_tag()
创建那些额外的元素。
演示:
>>> from bs4 import BeautifulSoup
>>> htmlFile = BeautifulSoup('<p></p>')
>>> newContent = """This is my content \n with a line break."""
>>> parent = htmlFile.p
>>> lines = newContent.splitlines()
>>> parent.append(htmlFile.new_string(lines[0]))
>>> for line in lines[1:]:
... parent.append(htmlFile.new_tag('br'))
... parent.append(htmlFile.new_string(line))
...
>>> print htmlFile.prettify()
<html>
<head>
</head>
<body>
<p>
This is my content
<br/>
with a line break.
</p>
</body>
</html>
我正在尝试用 BeautifulSoup 更改 html 文件的内容。此内容将来自基于 python 的文本,因此它将有 \n 换行符...
newContent = """This is my content \n with a line break."""
newContent = newContent.replace("\n", "<br>")
htmlFile.find_all("div", "product").p.string = newContent
当我这样做时,html 文件 <p>
文本更改为:
This is my content <br> with a line break.
如何更改 BeautifulSoup 对象中的字符串并保持 <br>
中断?如果字符串只包含 \n
那么它会创建一个实际的换行符。
您需要创建单独的元素; 一个 文本包含在 <p>
标签中,而是一系列文本和 <br/>
元素。
而不是用文本 <br/>
替换 \n
换行符(这将被转义),拆分换行符上的文本并在其间插入额外的元素:
parent = htmlFile.find_all("div", "product")[0].p
lines = newContent.splitlines()
parent.append(htmlFile.new_string(lines[0]))
for line in lines[1:]:
parent.append(htmlFile.new_tag('br'))
parent.append(htmlFile.new_string(line))
这使用 Element.append()
method to add new elements to the tree, and using BeautifulSoup.new_string()
and BeautifulSoup.new_tag()
创建那些额外的元素。
演示:
>>> from bs4 import BeautifulSoup
>>> htmlFile = BeautifulSoup('<p></p>')
>>> newContent = """This is my content \n with a line break."""
>>> parent = htmlFile.p
>>> lines = newContent.splitlines()
>>> parent.append(htmlFile.new_string(lines[0]))
>>> for line in lines[1:]:
... parent.append(htmlFile.new_tag('br'))
... parent.append(htmlFile.new_string(line))
...
>>> print htmlFile.prettify()
<html>
<head>
</head>
<body>
<p>
This is my content
<br/>
with a line break.
</p>
</body>
</html>