Mit python 2 aus Datei mit Umlauten in Python-Liste lesen?

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.
BlackJack

@siggi: Dann solltest Du vielleicht den Texteditor wechseln oder mal in den Einstellungen schauen wie man das sichtbar macht. Bei denen die ich so verwende sieht man es an den Zeilennummern und bei den meisten kann man „whitespace”-Zeichen auch sichtbar machen.
siggi
User
Beiträge: 79
Registriert: Montag 29. Januar 2007, 14:22

@BlackJack: Danke, das mit den Zeilennummern war ein guter Tipp!

Übrigens waren meine Fragen hier nur ein "Vorspiel" zum eigentlichen Problem: "Wie kriege ich Hangman für Python2-PyQt4 aus Hello World 2nd Ed.* dazu, deutsche Umlaute zu akzeptieren?" Nachdem ich http://blog.notdot.net/2010/07/Getting- ... -in-Python gelesen hatte und nach euerem Insistieren hier auf's richtige Coding, war's mir klar: die wichtigste Modifikation war, jedes Vorkommen von str( im Listing durch unicode( zu ersetzen.

*: listing_22-8.py aus ch22.zip von http://www.manning.com/sande/sourcecode ... y_Chapter/
Gruss,

siggi
siggi
User
Beiträge: 79
Registriert: Montag 29. Januar 2007, 14:22

Bin ich froh, dass ich - was Python und Unicode betrifft - ein Deutscher bin und nicht ein Franzose oder Schwede oder... Denn:
Ein Python-Experte sagte mir, es könne sein, dass z.B.

"à" == "à" FALSE ergeben kann! Begründung: http://en.wikipedia.org/wiki/Precomposed_character

Dann wird's mit Hangman schwierig, weil die beiden identisch-aussehenden Buchstaben auf verschiedenem Weg entstanden sein könnten. Und bei ä, ü, ö, ß gibt es ja wohl nur eine Art, die Zeichen zu generieren.

Stimmt das?
Gruss,

siggi
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Meinst Du sowas?

Code: Alles auswählen

>>>"ä"=="ä"
False
>>>print(ascii("ä"))
'a\u0308'
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@Sirius3
Für was wird das denn verwendet? Und wie funktioniert das denn: Setze 2 Punkte über das Zeichen links vom Cursor. Ich dachte, Unicode sei "nur" eine große Tabelle mit allen möglichen und unmöglichen Zeichen dieser Welt. Aber bei '\u0308' wird ja nicht nur auf ein Zeichen verwiesen, sondern auch etwas gemacht. Wobei jetzt, wenn ich das hier so schreibe denke ich eher, dass es der Codec ist, der das, worauf '\u0308' verweist, "ausführt"... Uiuiui...

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

@mutetella: Das wird zum Beispiel bei Dateinamen unter MacOS verwendet. Die sind AFAIK alle so normalisiert das keine „precomposed”-Zeichen verwendet werden. Also auch bei Umlauten nicht.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@mutetella: Unicode erlaubt es, Zeichen aus mehreren Teilen zusammenzusetzen. Viele Sprachen haben ja Punkte, Striche und Haken über oder unter normalen Buchstaben. Für die geläufigsten Kombinationen gibt es bereits eigene Zeichen. Für das Zusammenbauen ist nicht der Codec verantwortlich, sondern derjenige, der die Zeichen darstellt. Bei Python gibt es im Übrigen »unicodedata.normalize« um zwischen den verschiedenen Repräsentationsformen zu konvertieren.
Antworten