Probleme mit xml.parsers.expat

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Daiwah

Probleme mit xml.parsers.expat

Beitragvon Daiwah » Freitag 24. September 2004, 12:12

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
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Freitag 24. September 2004, 12:17

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
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Daiwah

Beitragvon Daiwah » Freitag 24. September 2004, 12:25

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 ?
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Freitag 24. September 2004, 13:43

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

Code: Alles auswählen

#!/usr/bin/env python
import this
Daiwah

Beitragvon Daiwah » Freitag 24. September 2004, 13:59

Alles klar, danke für die schnelle Hilfe !

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], snafu