我的标签很少,如
<span attrib="5_5"> <font size="3">Text:Hello World </font> </span>
<span attrib="5_5"> <font size="1">Text_Hello New World </font> </span>
与此同时,有些人不想要字体...所以他们没有它
<span attrib="5_5"> Text:Hello World </span>
<span attrib="5_5"> Text_Hello New World </span>
我需要将所有这些转换为
<font size="3">Test_Hello_World_5_5</font>
<font size="1">Text_Hello_New_World_5_5</font
我如何在BeautifulSoup中执行此操作?我可以做正则表达式并替换文本,但我丢失了字体。我需要保留孩子,并在同一个循环中使用正则表达式重新发送内部文本。谁能告诉我怎么做?基本上我想要一个each.replaceWithChildren,然后在SAME LOOP中更改each.text ...因为我不能丢失上下文。 5_5是来自父span的属性的数字。
在伪代码中我想要类似的东西:
span是所有span标签的美丽汤系列。
for each in span:
span.replaceWithChildren()
each.text = something
答案 0 :(得分:3)
类似的东西:
for x in doc.findAll('span'):
s = x["attrib"]
t = x.find('font')
t.string = t.text.strip() + '_' + s
x.replaceWithChildren()
<强>更新强>:
t = x.find('font')
if not t:
x.string += s
else:
t.string += s
x.replaceWithChildren()