J'essaye d'utiliser un package Python appelé bidi. Dans un module de ce package (algorithm.py), il y a des lignes qui me donnent une erreur, bien que cela fasse partie du package.
Voici les lignes:
# 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
et voici le message d'erreur:
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
Comment réécrire cette partie du code pour qu'elle fonctionne en Python3? Aussi, si quelqu'un a utilisé le package bidi avec Python 3, veuillez me faire savoir s'il a rencontré des problèmes similaires ou non. J'apprécie ton aide.
if isinstance(unicode_or_str, str)
devrait juste fonctionner. Renommer le nom de la variable est facultatif.unicode
remplacé parstr
.Si vous avez besoin que le script continue à travailler sur python2 et 3 comme je l'ai fait, cela pourrait aider quelqu'un
et peut alors juste faire par exemple
la source
six
bibliothèque pour gérer la compatibilité Python 2/3, vous pouvez faire ceci:if six.PY3: unicode = str
au lieu desys.version_info
choses. Ceci est également très utile pour empêcher les erreurs de linter liées à l'unicode d'être indéfinies dans Python 3, sans avoir besoin d'exemptions spéciales de règle de linter.Vous pouvez utiliser les six bibliothèques pour prendre en charge à la fois Python 2 et 3:
la source
J'espère que vous utilisez Python 3, Str sont unicode par défaut, veuillez donc remplacer la
Unicode
fonction par laStr
fonction String .la source