[Python-de] xml mit Umlauten parsen
Mathias Uebel
mathias.uebel at meeloon.de
Mo Mär 17 17:15:53 CET 2008
Hallo Dietz,
Diez B. Roggisch schrieb:
> On Monday 17 March 2008 14:40:10 Mathias Uebel wrote:
>
>> Hallo Leute,
>>
>> ich habe gerade keine Lösung für Folgendes:
>>
>> # tv-movie lesen
>> import urllib2, re
>> my_url = urllib2.urlopen('http://www.tvmovie.de/rss/tvjetzt.xml')
>> my_xml = my_url.read()
>> my_url.close()
>>
>> # tv-movie xml parsen
>> import xml.dom.minidom
>> dom = xml.dom.minidom.parseString(my_xml)
>>
>> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in
>> position 28: ordinal not in range(128)
>>
>> [...]
> [...]
>
> wo genau bitte kommt denn der Fehler? beim erzeugen des DOM? Oder in code den
> du uns nicht zeigst?
>
Ja, genau; in dem Teil, der jetzt kommt:
def liesText(pretext, knoten):
for k in knoten.childNodes:
if k.nodeType == k.TEXT_NODE:
print pretext, k.nodeValue.strip()
def liesAdressen(knoten):
for num, elem in enumerate(knoten.getElementsByTagName("item")):
#print type(elem)
print "%d. item:" % (num + 1)
for my_title in elem.getElementsByTagName("title"):
liesText("title:", my_title)
for my_descrip in elem.getElementsByTagName("description"):
liesText("description:", my_descrip)
print
def dokument(start):
for elem in start.getElementsByTagName("channel"):
liesAdressen(elem)
dokument(dom)
Ausgabe:
1. Item
... wenn der erste Umlaut erscheint
6. item:
title: 17:00 RTL II - Immer wieder Jim
description: Traceback (most recent call last):
File "tv-now.py", line 54, in ?
dokument(dom)
File "tv-now.py", line 52, in dokument
liesAdressen(elem)
File "tv-now.py", line 47, in liesAdressen
liesText("description:", my_descrip)
File "tv-now.py", line 38, in liesText
print pretext, k.nodeValue.strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in
position 25: ordinal not in range(128)
>Exit code: 1
Danke
Mehr Informationen über die Mailingliste python-de