www syntaxerror see peps org non for declared declarar coding codification but python python-3.x unicode python-2.x unicode-literals

python - see - syntaxerror: non-ascii character



Literales Unicode que funcionan en python 3 y 2 (1)

Así que tengo un script de Python que preferiría que funcione en Python 3.2 y 2.7 solo por conveniencia.

¿Hay alguna manera de tener literales Unicode que funcionen en ambos? P.ej

#coding: utf-8 whatever = ''שלום''

El código anterior requeriría una cadena Unicode en python 2.x (u '''') y en python 3.x ese pequeño ''u'' causa un error de sintaxis.

De todos modos, encontré la respuesta, todo lo que necesitaba era:

from __future__ import unicode_literals

Todavía estoy publicando la pregunta debido a https://meta.stackexchange.com/questions/49922/should-i-continue-adding-a-question-if-i-have-found-the-answer-myself

Para los curiosos, esto es en lo que estoy trabajando: http://code.google.com/p/pytitle/


Editar - Desde Python 3.3, el u'''' literal funciona nuevamente, por lo que la función u() no es necesaria.

La mejor opción es crear un método que cree objetos unicode a partir de objetos de cadena en Python 2, pero deje los objetos de cadena solo en Python 3 (ya que son unicode).

import sys if sys.version < ''3'': import codecs def u(x): return codecs.unicode_escape_decode(x)[0] else: def u(x): return x

Entonces lo usarías así:

>>> print(u(''/u00dcnic/u00f6de'')) Ünicöde >>> print(u(''/xdcnic/N{Latin Small Letter O with diaeresis}de'')) Ünicöde