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 が必要で、 each.text を変更します...コンテキストを失うことができないため、同じループで...。5_5 は、親スパンの属性に由来する数値です。

擬似コードでは、次のようなものが必要です:

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 に答える