Sto riscontrando problemi nell'assegnare stringhe unicode come nomi per un namedtuple. Questo funziona:namedtuple con stringa unicode come nome
a = collections.namedtuple("test", "value")
e questo non lo fa:
b = collections.namedtuple("βαδιζόντων", "value")
ottengo l'errore
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: 'βαδιζόντων'
Perché è questo il caso? La documentazione dice, "Python 3 supporta anche l'uso di caratteri Unicode negli identificatori" e la chiave è unicode valida?
Qualcosa che ho notato: Funziona bene se lascio fuori il '' ó''. Sembra un bug per me. – pmos
Interessante - avrei dovuto provarlo anch'io. ó è l'unico carattere del blocco Unicode "Greco esteso", quindi potrebbe essere rilevante. Ma sarebbe ancora in disaccordo con ciò che dice la documentazione. – Thomas
A un esame più attento, ciò che accade è che, per qualche ragione, '' 'ó''' è ''' \ xe1 \ xbd \ xb9''' nel file sorgente codificato UTF-8, ma si trasforma in '' '\ xcf \ x8c''' nel codice generato da '' namedtuple'' per generare la sua classe. Questo sicuramente sembra un bug. – pmos