当前位置: 首页 > 知识库问答 >
问题:

NameError:未定义全局名称“unicode”-在Python 3中

丌官开宇
2023-03-14

我试图使用一个名为Bidi的Python包。在这个包(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软件包与Python3一起使用,请告诉我他们是否发现了类似的问题。我感谢你的帮助。

共有3个答案

朱岳
2023-03-14

您可以使用six库来支持Python 2和Python 3:

import six
if isinstance(value, six.string_types):
    handle_string(value)
韦飞尘
2023-03-14

如果您需要让脚本像我一样在python2和pytho3上继续工作,这可能会对某些人有所帮助

import sys
if sys.version_info[0] >= 3:
    unicode = str

然后就可以做个例子

foo = unicode.lower(foo)
魏风华
2023-03-14

Python3将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

您可能需要阅读Python3移植指南以了解更多此类详细信息。还有Lennart Regebro的《移植到Python3:深入指南》,免费在线。

最后但并非最不重要的一点是,您可以尝试使用2to3工具来查看它如何为您翻译代码。

 类似资料:
  • 问题内容: 我正在尝试使用一个名为bidi的Python包。在此程序包(algorithm.py)中的模块中,尽管它是程序包的一部分,但仍有一些行会给我带来错误。 以下是这些行: 这是错误消息: 我应该如何重新编写代码的这一部分,使其可以在Python3中使用?另外,如果有人在Python 3中使用了bidi软件包,请让我知道他们是否发现了类似的问题。我感谢您的帮助。 问题答案: Python 3

  • 问题内容: 我在Mac OS X上使用Python 2.6.1。 我有两个简单的Python文件(如下),但是当我运行时 我在终端上: 我尝试以不同的方式重命名文件和类,这就是为什么两端有x和z的原因。;) 文件sqlitedbx.py 文件update_url.py 问题答案: 您需要做:

  • 问题内容: 我发现有关滚动条的这段代码工作正常。 我尝试在我的代码中使用它,如下所示: 但是,当我运行上述代码时,插入行出现错误。 顺便说一句,我试图找到文档,而effbot的链接是我最近的链接,但仍然无法理解是什么错误。 问题答案: ,和都驻留在名称空间中。因此,需要通过以下方式来对他们进行资格鉴定: 或者,您可以根据需要显式导入它们:

  • 问题内容: 运行python程序时出现错误: 游戏从这里开始。 是什么导致此错误? 问题答案: 您正在尝试使用Python 3运行Python 2代码库。在Python 3中已重命名为。 而是使用Python 2运行游戏。不要试图将它移植,除非你知道自己在做什么,很可能会出现超越更多的问题与。 作为记录,您看到的不是语法错误,而是运行时异常。 如果您确实知道自己在做什么,并且正在积极地使Pytho

  • 问题内容: 我在自学Python,只是在“探索”。Google说datetime是一个全局变量,但是当我尝试在终端中查找今天的日期时,我在问题标题中收到NameError吗? 问题答案: 您需要先导入模块: 之后,它可以工作:

  • 问题内容: 我有以下代码,并在尝试运行它时收到以下错误消息: 我试图让Raspberry Pi在端口17上收到输入时运行HTML脚本: 问题答案: Python的布尔常量是大写的:与以大写字母和分别。 小写变体只是变量的有效免费名称,因此您可以将它们用于任何所需的变量,例如(不建议使用; P)。