【发布时间】:2023-04-07 08:14:01
【问题描述】:
我有一个像这样的 html 字符串:
test = """<body>
<h1>A header</h1>
<p> Just a normal paragraph <b>before</b> </p>
<p>• test element</p>
<p>• test element2</p>
<p> Following <i>stuff</i></p>
</body>
"""
此用户已明确包含 u'\u2022' 项目符号字符,而不是使用列表。我想得到以下转换后的html
<body>
<h1>A header</h1>
<p> Just a normal paragraph <b>before</b> </p>
<ul>
<li>test element</li>
<li>test element2</li>
</ul>
<p> Following <i>stuff</i></p>
</body>
解决这个问题的最优雅的方法是什么?然后我可以从标签字符串上的简单 .find 中识别出这些项目符号项。我可以删除子弹并将它们包裹在<li> 标签中。但我不知道如何遍历汤,然后将所有子弹包装成一个 <ul> 标记。如果我可以像普通列表一样遍历汤并创建一个包含新元素的修改列表,我可以执行以下伪代码:
new_soup = []
for tag in soup:
if has_bullet(tag):
# start storing tags
bullets.append(tag)
else:
if bullets: # if we have some bullets to dump
new_soup.append(ul_tag_start)
new_soup.extend(modify_text(bullets))
new_soup.append(ul_tag_end)
new_soup.append(tag)
# clear bullets list
bullets = []
但是不知道要一个个元素一个个地写新的soup,不知道有没有更好的办法使用bs4的各种insert、insert_before、insert_after等方法。
【问题讨论】:
标签: python html beautifulsoup