Function replace im Modul re und ASCII

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
Benutzeravatar
xeroxed_yeti
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2007, 15:42

Guten Morgen zusammen,

ich habe mich gestern den ganzen Tag mit Umlauten und Python geärgert und steige einfach nicht hinter meinen Fehler.

Mein Script liest eine Datei mit Umlauten ein und soll diese mit anderen
Buchstabenkombinationen ersetzen.

In der Header Zeile definiere ich den Codec:

Code: Alles auswählen

#!/usr/bin/python2.4 -w
# -*- coding: utf-8 -*- 
Nachdem die File eingelesen wurde durchlaufe ich jede Zeile und will einfach die Umlaute ersetzten. Pyhton Syntax für das 'Ä' sieht folgender Maßen in meinem Script aus:

Code: Alles auswählen

 for line in input:
        print line

        #line = line.encode('utf-8')
         line= line.replace(u'ä', u'ae')
Das Script endet mit der Fehlermeldung: "UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 24: ordinal not in range(128)". Wie muss ich den Syntax wählen, damit ganz klar hervor geht, dass ich keine ASCII Kodierung gewählt habe.

Vielen Dank für eure Hilfe!
Zuletzt geändert von xeroxed_yeti am Dienstag 7. Juli 2009, 09:14, insgesamt 1-mal geändert.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Was ist mit:

Code: Alles auswählen

line= line.replace('ä', 'ae') 
Schon versucht?

Außerdem sollte die Shebang nie Versions spezifisch sein...
lunar

Du musst bereits beim Öffnen der Datei korrekt dekodieren. Das "codecs"-Modul stellt passende Funktionen dazu bereit.
Benutzeravatar
xeroxed_yeti
User
Beiträge: 2
Registriert: Dienstag 3. Juli 2007, 15:42

Uah, ja so einfach war es.

Hatte gestern so verzweifelt nach Codec Input gesucht und selbst nicht mehr auf die "back to the basic" Sachen geschaut :-)

Die Lösung war:

line = line.replace('ä', 'ae')

Danke!
Antworten