11

つまり、要素自体のタグなしで、すべてのテキストとサブタグですか?

持つ

<p>blah <b>bleh</b> blih</p>

私が欲しい

blah <b>bleh</b> blih

element.text は「何とか」を返し、etree.tostring(element) は次を返します。

<p>blah <b>bleh</b> blih</p>
4

7 に答える 7

8

これは私が使用することになった解決策です:

def element_to_string(element):
    s = element.text or ""
    for sub_element in element:
        s += etree.tostring(sub_element)
    s += element.tail
    return s
于 2008-12-19T17:27:09.257 に答える
2

ElementTree がこれに使用するものであるとは思えません。ただし、それを使用する強い理由があると仮定すると、フラグメントからルート タグを削除してみることができます。

 re.sub(r'(^<%s\b.*?>|</%s\b.*?>$)' % (element.tag, element.tag), '', ElementTree.tostring(element))
于 2008-12-19T11:56:30.373 に答える
0

この回答は、Pupeno の回答をわずかに変更したものです。ここで、エンコーディング タイプを「tostring」に追加しました。この問題には何時間もかかりました。この小さな修正が他の人に役立つことを願っています。

def element_to_string(element):
        s = element.text or ""
        for sub_element in element:
            s += ElementTree.tostring(sub_element, encoding='unicode')
        s += element.tail
        return s
于 2020-07-21T00:06:21.657 に答える