2

我有几个标签

<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 中做到这一点?我可以做一个正则表达式并替换文本,但我丢失了字体。我需要保留孩子,并在同一个循环中用 regex 替换内部文本。谁能告诉我该怎么做?基本上我想要一个 each.replaceWithChildren 然后在 SAME LOOP 中更改 each.text ...,因为我不能丢失上下文。5_5 是一个来自父 span 属性的数字。

在伪代码中,我想要类似的东西:

span 是所有 span 标签的漂亮汤集合。

for each in span:
   span.replaceWithChildren()
   each.text = something
4

1 回答 1

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()
于 2013-10-11T12:47:52.673 回答