9

ElementTreeを使用してHTMLを生成していますが、ElementTreeがテキストをノードとしてではなく、のプロパティとして保存するという問題が発生しtextましtailElement。これは、たとえば次のように、複数のテキストノードを必要とするものを生成する場合に問題になります。

<a>text1 <b>text2</b> text3 <b>text4</b> text5</a>

私が知る限り、これを生成する方法はありません-私は何かが欠けていますか?または、Pythonですばやく簡単にHTMLを生成するためのより良いソリューションはありますか?

4

1 に答える 1

13

上記の文字列を生成するにはElementTree、次のコードを使用できます。これの秘訣は、textが次の要素の前の最初の大量のテキストであり、tailが要素の後から次の要素までのすべてのテキストであるということです。

import xml.etree.ElementTree as ET
root = ET.Element("a")
root.text = 'text1 ' #First Text in the Element a
b = ET.SubElement(root, "b")
b.text = 'text2' #Text in the first b
b.tail = ' text3 ' #Text immediately after the first b but before the second
b = ET.SubElement(root, "b")
b.text = 'text4'
b.tail = ' text5'
print ET.tostring(root)
#This prints <a>text1 <b>text2</b> text3 <b>text4</b> text5</a>
于 2010-07-07T10:00:10.887 に答える