Seite 1 von 1
Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 11:33
von dennis.py
Hallo Forum,
ich bin neu bei Python (habe mich eine zeitlang an C++ versucht, mich aber jetzt entschieden, doch erstmal mit Python einzusteigen und viel später nochmal einen C++-Versuch zu wagen). Ich arbeite gerade "A Byte of Python" durch und habe eine Frage zum Encoding.
Mein Code:
Code: Alles auswählen
#!/usr/bin/python
#-*- coding: utf-8 -*-
liste = ("Käse", "Äpfel", "Ölsardinen")
for i in liste:
print i
print liste
Die Ausgabe:
Code: Alles auswählen
Käse
Äpfel
Ölsardinen
('K\xc3\xa4se', '\xc3\x84pfel', '\xc3\x96lsardinen')
Warum ignoriert er die Kodierung, wenn ich "liste" als Ganzes ausgebe?
Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 12:07
von snafu
Bei Listen wird für jedes Element `repr(element)` aufgerufen, während `print` ein `str(element)` macht. Intern benötigt ein Umlaut eben zwei Zeichen. Die Umwandlung geschieht erst durch die Darstellung "nach außen".
Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 12:15
von dennis.py
snafu hat geschrieben:Bei Listen wird für jedes Element `repr(element)` aufgerufen, während `print` ein `str(element)` macht. Intern benötigt ein Umlaut eben zwei Zeichen. Die Umwandlung geschieht erst durch die Darstellung "nach außen".
Die Hilfe spricht bei repr() von einer "string representation", bei str() von einer "nice string representation". Kann man in einfachen Worten erklären, wo der Unterschied in der Arbeitsweise liegt, oder sollte ich mich mit dem Verständnis gedulden, bis ich insgesamt etwas mehr über Python weiß?
Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 12:39
von DasIch
`repr()` liefert eine ascii Repräsentation des Strings, `str()` gibt den String selbst zurück.
Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 12:46
von dennis.py
Ah, okay, danke euch!

Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 13:29
von BlackJack
@dennis.py: Zwei Anmerkungen: Das was Du da `liste` nennst ist keine sondern ein Tupel. Und man sollte in echten Programmen die Datentypen möglichst aus dem Namen heraus halten. Weil es immer mal wieder vorkommt, dass man den Typen ändert und dann entweder jedes Vorkommen des Namens anpassen muss; oder das lässt und dann irreführende Namen im Programm hat.
Re: Frage zu Umlauten und Kodierung
Verfasst: Sonntag 22. Mai 2011, 13:38
von dennis.py
BlackJack hat geschrieben:@dennis.py: Zwei Anmerkungen: Das was Du da `liste` nennst ist keine sondern ein Tupel.
Stimmt. Aufgefallen war mir das Phänomen zum ersten Mal bei einer Liste, gestellt habe ich die Frage aber, als ich im Kapitel über Tupel war. Sorry, mein Fehler.
BlackJack hat geschrieben:Und man sollte in echten Programmen die Datentypen möglichst aus dem Namen heraus halten. Weil es immer mal wieder vorkommt, dass man den Typen ändert und dann entweder jedes Vorkommen des Namens anpassen muss; oder das lässt und dann irreführende Namen im Programm hat.
Das ist mir klar und ich hätte es in einem echten Programm auch nicht gemacht. Trotzdem danke für den Hinweis!
