Estou tentando usar um pacote Python chamado bidi. Em um módulo neste pacote (algoritm.py), existem algumas linhas que me dão erro, embora faça parte do pacote.
Aqui estão as linhas:
# 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
e aqui está a mensagem de erro:
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
Como devo reescrever essa parte do código para que funcione no Python3? Além disso, se alguém tiver usado o pacote bidi com o Python 3, informe-me se eles encontraram problemas semelhantes ou não. Eu aprecio sua ajuda.
if isinstance(unicode_or_str, str)
deve funcionar. Renomear o nome da variável é opcional.unicode
substituído porstr
.Se você precisar que o script continue trabalhando em python2 e 3 como eu, isso pode ajudar alguém
e pode fazer apenas por exemplo
fonte
six
biblioteca para gerenciar a compatibilidade do Python 2/3, poderá fazer o seguinte: emif six.PY3: unicode = str
vez desys.version_info
outras coisas. Isso também é muito útil para evitar que erros de linter relacionados ao unicode sejam indefinidos no Python 3, sem a necessidade de isenções especiais de regras de linter.Você pode usar a biblioteca seis para dar suporte ao Python 2 e 3:
fonte
Espero que você esteja usando Python 3, Str são unicode por padrão, então substitua a
Unicode
função pelaStr
função String .fonte