Seite 1 von 1

Probleme mit xml.parsers.expat

Verfasst: Freitag 24. September 2004, 12:12
von Daiwah
Hallo, ich bin Python-Anfänger und muss mich in xml-Parsing mit expat einarbeiten.
Dazu habe ich das Beispiel aus der Doku in mein Script eingefügt:

Code: Alles auswählen

import xml.parsers.expat
import string, sys

# 3 handler functions
def start_element(name, attrs):
     print 'Start element:', name, attrs
def end_element(name):
    print 'End element:', name
def char_data(data):
    print 'Character data:', repr(data)

def main():
    p= xml.parsers.expat.ParserCreate('ISO-8859-1')
    p.StartElementHandler = start_element
    p.EndElementHandler = end_element
    p.CharacterDataHandler = char_data
    
    p.ParseFile(open('test.xml', 'r'))

if __name__ == "__main__":
	main()
das xml-file:

Code: Alles auswählen

<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>
Die Ausgabe sollte eigentlich wie folgt aussehen:

Start element: parent {'id': 'top'}
Start element: child1 {'name': 'paul'}
Character data: 'Text goes here'
End element: child1
...
Allerdings steht bei mir vor den Attributen immer ein 'u', also:

Start element: parent {u'id': u'top'}
Start element: child1 {u'name': u'paul'}
Character data: u'Text goes here'
...

Keine Ahnung wieso, weiss da jemand Rat?

Dirk

Verfasst: Freitag 24. September 2004, 12:17
von fs111
Das bedeutet, dass es sich um Unicode-Strings handelt. Mit einem vorangestellten "u" erzeugt man in Python Unicode.

Code: Alles auswählen

>>> a = "abc"
>>> type(a)
<type 'str'>
>>> a = u"abc"
>>> type(a)
<type 'unicode'>
>>>

Grüße fs111

Verfasst: Freitag 24. September 2004, 12:25
von Daiwah
Danke erstmal für die schnelle Antwort...

wie kriege ich das dann weg, wenn ich es zum Beispiel ausgeben will, und kommt das nur bei Ausgaben mit print vor würde also bei interner Verarbeitung nicht stören ?

Verfasst: Freitag 24. September 2004, 13:43
von Dookie
Hi Daiwah,

das kommt nur vor, wenn du eine Liste oder ein Dictionary direkt mit print ausgiebst, dann werden die Einträge mit repr(objekt) ausgegeben.


Gruß

Dookie

Verfasst: Freitag 24. September 2004, 13:59
von Daiwah
Alles klar, danke für die schnelle Hilfe !