Я пытаюсь использовать пакет Python под названием bidi. В модуле этого пакета (algorithm.py) есть несколько строк, которые выдают мне ошибку, хотя это часть пакета.
Вот строки:
# 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
и вот сообщение об ошибке:
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
Как мне переписать эту часть кода, чтобы она работала на Python3? Также, если кто-то использовал пакет bidi с Python 3, сообщите мне, обнаружили ли они похожие проблемы или нет. Я ценю вашу помощь.
if isinstance(unicode_or_str, str)
должно просто работать. Переименование имени переменной необязательно.unicode
заменив его наstr
.Если вам нужно, чтобы скрипт продолжал работать на python2 и 3, как я, это может помочь кому-то
а затем можно просто сделать, например,
источник
six
библиотеку для управления совместимостью Python 2/3, вы можете сделать это:if six.PY3: unicode = str
вместоsys.version_info
всякого материала. Это также очень полезно для предотвращения ошибок линтера, связанных с неопределенностью unicode в Python 3, без необходимости специальных исключений из правил линтера.Вы можете использовать библиотеку six для поддержки Python 2 и 3:
источник
Надеюсь, вы используете Python 3, Str по умолчанию является юникодом, поэтому замените
Unicode
функцию на функцию StringStr
.источник