mal wieder eine Variante dieses "lästigen" Themas.
Mir ist aufgefallen, dass bei lxml das ".text"-Attribut der Element-Klasse(n) als Typen mal unicode und mal str hat.
Folgendes Beispiel soll das mal verdeutlichen:
Code: Alles auswählen
In [9]: foo = u"<root><bar>Hallöle</bar><bar>ohne special chars</bar></root>"
In [10]: root = etree.fromstring(foo)
In [11]: print type(root.getchildren()[0].text)
-------> print(type(root.getchildren()[0].text))
<type 'unicode'>
In [12]: print type(root.getchildren()[1].text)
-------> print(type(root.getchildren()[1].text))
<type 'str'>
In der Doku steht dazu folgendes:
Das passt imho nicht zusammen, oder?lxml Doku (__Element) hat geschrieben: text
Text before the first subelement. This is either a string or the value None, if there was no text.
Nun meine Fragen: Kann man lxml dazu bewegen nur mit unicode zu arbeiten, oder wenn nicht, wie wäre dann die best-practise, wenn man Text-Elemente intern weiter verarbeiten will? (Dazu müßte man ja per if-else ne Abfrage nach dem Typen basteln?)