Problem mit dem encoding

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.
Antworten
Resetpin
User
Beiträge: 5
Registriert: Montag 18. Juni 2012, 11:33

Hallo,

ich habe ein Python Skript geschrieben welches mir den Inhalt einer Webseite holt. Dies geschiet wie folgt:

Code: Alles auswählen

page = urllib.urlopen(url).readlines()
for line in page:
    #hier werden die einzelnen Zeilen auf ihren Inhalt untersucht
    #ist der entsprechende Inhalt gefunden werden alle unnützen Teile der Zeile entfert
    #letztlich bleibt eine Liste übrig die einen Link und eine Beschreibung enthält
    #die beiden Teile sollen dann in eine Datei geschrieben werden

    file.write(link[1] + "\t" + link[0] + "\n")
Nun kommt es vor, dass in link[1] also der Beschreibung, Zeichen vorkommen die durch ascii nicht darstellbar sind bei mir wäre das zum Beispiel das Wort
"Électrique Radio"
was mir in link[1] = '\xc9lectrique Radio' angezeigt wird und vom typ str ist

und mir in der Zeile "file.write(link[1] + "\t" + link[0] + "\n")" mit folgendem Fehler angezeigt wird:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc9 in position 0: ordinal not in range(128)

Ich hab mit dem encoding ein bischen rumprobiert, wobei ich sagen muss dass ich damit noch nicht viel zu tun hatte und herausgefunden dass mit folgendem
Konstrukt das gewünschte Ergebis erreicht würde:
u"\xc9lectrique Radio"

Mein Problem ist nur wie komme ich von einem "\xc9lectrique Radio" in ein u"\xc9lectrique Radio"?
Möglicherweise muss ich schon beim auslesen der url das encoding irgendwie anders einstellen?

Für alle Tips und Anregugnen schon jetzt recht herzlichen Dank.

Viele Grüße

Frank
Zuletzt geändert von Anonymous am Donnerstag 20. März 2014, 13:16, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@Resetpin: Der Kommentar in der Zeile klingt erschreckend. Verwende für das Parsen von HTML eine Bibliothek die dafür gedacht ist. `BeautifulSoup` oder `lxml.html`. Die liefern auch gleich Unicode-Objekte für den Text.
Resetpin
User
Beiträge: 5
Registriert: Montag 18. Juni 2012, 11:33

Hi,

vielen Dank für die schnelle Antwort, die beiden Bibliotheken kannte ich noch nicht, werde mir die gleich mal ansehen.

Danke nochmals

Frank
Antworten