String-Methoden und Unicode

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
Gast

Hallo, ich bastelle gerade an einem Programm und habe jetzt ein Problem mit Strings.
Sobald ein String ASCII Zeichen über 128 enthält lässt sich keine der stringmethoden wie split mehr anwenden. beim speichern ist es dasselbe problem.
Was muss ich machen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gib doch mal bitte ein Beispiel, denn das scheint bei mir durchaus zu funktionieren:

Code: Alles auswählen

In [1]: 'ö ä'.split()
Out[1]: ['\xf6', '\xe4']
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gast

In der Pythonshell klappt split und replace bei mir auch aber nicht im Programm, z.B. steht da :

text = text.replace("$$$", s)

text ist eine geladene datei und s irgendein string mit asciizeichen über 128

dann kommt als fehlermeldung:

UnicodeDecodeError : 'ascii ' codec cant decode byte 0xc3 in position4 : ordinal not in range(128)

in der shell kann ich den selben fehler mit dieser zeile erzeugen

>>> unicode("abc ä abc")
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Geht einwandfrei:

Code: Alles auswählen

#!/usr/bin/python
# -*- encoding: latin-1 -*-

text = "äöü $$$"
text = text.replace("$$$", 'SPAMWORD') 
print text
Wobei bei mir sys.defaultencoding 'ascii' ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten