NameError: 글로벌 이름 'unicode'가 정의되지 않았습니다(Python 3).
나는 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에서 작동하도록 코드의 이 부분을 어떻게 다시 작성해야 합니까?또한 Python 3에서 bidi 패키지를 사용한 사람이 있다면 비슷한 문제를 발견했는지 알려주시기 바랍니다.고마웠어.
Python 3에서 이름을 변경되었습니다.unicode
에 타자를 치다.str
옛사람str
유형이 다음으로 대체되었습니다.bytes
.
if isinstance(unicode_or_str, str):
text = unicode_or_str
decoded = False
else:
text = unicode_or_str.decode(encoding)
decoded = True
자세한 내용은 Python 3 포팅 HOWTO를 참조하십시오.또한 레나트 레게브로의 Porting to Python 3: 심층 가이드, 무료 온라인도 있습니다.
마지막으로 중요한 것은 이 도구를 사용하여 이 도구가 코드를 어떻게 변환하는지 확인하는 것입니다.
만약 당신이 나처럼 python2와 3에서 스크립트를 계속 작동시켜야 한다면, 이것은 누군가에게 도움이 될 수 있습니다.
import sys
if sys.version_info[0] >= 3:
unicode = str
그리고 나서 예를 들어 할 수 있습니다.
foo = unicode.lower(foo)
6개의 라이브러리를 사용하여 Python 2와 3을 모두 지원할 수 있습니다.
import six
if isinstance(value, six.string_types):
handle_string(value)
하나는 대체할 수 있습니다.unicode
와 함께u''.__class__
실종된 사람들을 처리하기 위해unicode
Python 3의 클래스입니다.Python 2와 3 모두에 대해 구성을 사용할 수 있습니다.
isinstance(unicode_or_str, u''.__class__)
또는
type(unicode_or_str) == type(u'')
추가 처리에 따라 다음과 같은 결과를 고려합니다.
파이썬 3
>>> isinstance(u'text', u''.__class__)
True
>>> isinstance('text', u''.__class__)
True
파이썬 2
>>> isinstance(u'text', u''.__class__)
True
>>> isinstance('text', u''.__class__)
False
기본적으로 Python 3, Strear unicode를 사용하고 있기를 바랍니다. 교체하십시오.Unicode
문자열을 사용한 함수Str
기능.
if isinstance(unicode_or_str, str): ##Replaces with str
text = unicode_or_str
decoded = False
타사 라이브러리에서 사용하는 경우unicode
그리고 당신은 그들의 소스 코드를 변경할 수 없습니다, 다음 원숭이 패치는 사용할 수 있습니다.str
대신에unicode
모듈에서:
import <module>
<module>.unicode = str
당신은 이것을 python2 또는 python3에서 사용할 수 있습니다.
type(value).__name__ == 'unicode':
언급URL : https://stackoverflow.com/questions/19877306/nameerror-global-name-unicode-is-not-defined-in-python-3
'programing' 카테고리의 다른 글
작업의 용도는 무엇입니까?C#의 결과로부터 (0) | 2023.05.11 |
---|---|
특정 명령에 대한 Bash 무시 오류 (0) | 2023.05.11 |
제약 조건이 0의 높이를 모호하게 제시하는 경우를 감지함 (0) | 2023.05.11 |
WPF란 무엇이며 WinForms와 비교하면 어떻습니까? (0) | 2023.05.11 |
이름이 올바른 식별자가 아니기 때문에 exec이 실패했습니까? (0) | 2023.05.06 |