Estoy tratando de usar un paquete de Python llamado bidi. En un módulo de este paquete (Algoritmo.py) hay algunas líneas que me dan error, aunque es parte del paquete.
Aquí están las líneas:
# utf-8 ? we need unicode
if isinstance(unicode_or_str, unicode):
text = unicode_or_str
decoded = False
else:
text = unicode_or_str.decode(encoding)
decoded = True
y aquí está el mensaje de error:
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
bidi_text = get_display(reshaped_text)
File "C:\Python33\lib\site-packages\python_bidi-0.3.4-py3.3.egg\bidi\algorithm.py", line 602, in get_display
if isinstance(unicode_or_str, unicode):
NameError: global name 'unicode' is not defined
¿Cómo debería volver a escribir esta parte del código para que funcione en Python3? Además, si alguien ha usado el paquete bidi con Python 3, avíseme si ha encontrado problemas similares o no. Aprecio tu ayuda.
if isinstance(unicode_or_str, str)
debería funcionar Cambiar el nombre de la variable es opcional.unicode
reemplazado porstr
.Si necesita que el script siga funcionando en python2 y 3 como lo hice, esto podría ayudar a alguien
y luego puede hacer por ejemplo
fuente
six
biblioteca para administrar la compatibilidad con Python 2/3, puede hacer esto: enif six.PY3: unicode = str
lugar desys.version_info
cosas. Esto también es muy útil para evitar que los errores de linter relacionados con Unicode no estén definidos en Python 3, sin necesidad de exenciones especiales de reglas de linter.Puede usar las seis bibliotecas para admitir Python 2 y 3:
fuente
Espero que estés usando Python 3, Str son unicode por defecto, así que reemplaza la
Unicode
función con laStr
función String .fuente