Ich habe Probleme beim Zuweisen von Unicode-Strings als Namen für ein namedtuple. Dies funktioniert:namedtuple mit Unicode-String als Name
a = collections.namedtuple("test", "value")
und dies nicht:
b = collections.namedtuple("βαδιζόντων", "value")
Ich erhalte den Fehler
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.4/collections/__init__.py", line 370, in namedtuple
result = namespace[typename]
KeyError: 'βαδιζόντων'
Warum das der Fall ist? Die Dokumentation sagt, "Python 3 unterstützt auch die Verwendung von Unicode-Zeichen in Bezeichnern" und der Schlüssel ist Unicode gültig?
Etwas, was mir aufgefallen ist: Es funktioniert gut, wenn ich das '' ó'' weglassen. Scheint mir wie ein Käfer. – pmos
Interessant - ich hätte das selbst testen sollen. ó ist das einzige Zeichen aus dem Unicode-Block "Greek Extended", daher könnte dies relevant sein. Aber es würde immer noch nicht damit übereinstimmen, was die Dokumentation sagt. – Thomas
Bei genauerem Hinsehen passiert, dass '' '' '' '' \ xe1 \ xbd \ xb9''' in der UTF-8 kodierten Quelldatei ist, aber in '' \ xcf \ x8c''' in dem von '' namedtuple'' generierten Code zum Generieren seiner Klasse. Das scheint definitiv ein Fehler zu sein. – pmos