cookie: (PYTHON) Unicode-Strings innerhalb anderer Datenstrukturen

Beitrag lesen

Hallo,

Ich benutze Python 2.5 unter Fedora 8 Linux (x86).
wie man im Folgenden sieht, kann ich mit print problemlos Strings mit Sonderzeichen ausgeben, aber wenn derselbe String innerhalb einer Liste steht, wandelt print ihn um:

a = 'ähnlich'
print a

ähnlich

b = ['ähnlich']
print b

['\xc3\xa4hnlich']

b = [u'ähnlich']
print b

[u'\xe4hnlich']

b = [U'ähnlich']
print b

[u'\xe4hnlich']

c = b[0]
print c

ähnlich

print b[0]

ähnlich

Ich habe auch mit u und U herumgewurschtelt, einfach um zu zeigen, dass auch die explizite Deklaration als Unicode-String keinen Unterschied macht. Das ist übrigens auch so eine Sache, die ich beim Lesen verschiedener Internet-Tutorials zu Python nicht so ganz verstanden habe: Welchen Wert hat es denn eigentlich, einen String als Unicode zu bezeichnen, wenn es keine Angabe zu der verwendeten Codierung gibt (z.B. UTF-8, UTF-2 etc.)?
Auf jeden Fall möchte ich nun gerne, dass Strings innerhalb von anderen Datentypen bei der Ausgabe ebenso behandelt wie einzelne Strings. Ich wünsche mir also eine Ausgabe wie:

Beispiel für die gewünschte Ausgabe:

b = ['ähnlich']
print b

['ähnlich']

Wie wäre das zu bewerkstelligen?
Ich finde das Verhalten von Python in diesem Punkt sehr überraschend. Auf diversen Webseiten habe ich Hinweise gefunden, dass print vor der Ausgabe eine 'string conversion' durchführt, aber dies erklärt für mich nicht, warum ein Unterschied zwischen einzelnen Strings und Strings innerhalb anderer Datenstrukturen besteht (dasselbe Verhalten gibt es z.B. auch bei Strings in Dictionaries.).

Viele Grüße
cookie