NameError: name ‘unicode’ is not defined in Python [已解决]

NameError: 名称 ‘unicode’ 未在 Python 中定义

NameError: name ‘unicode’ is not defined in Python

unicode在Python 3中使用对象时出现Python“NameError name ‘unicode’ is not defined”

要解决该错误,请将所有对unicode()with的调用替换str()为 because
unicodewas renamed to strin Python 3。

nameerror 名称 unicode 未定义

main.py
result = str('ABC') print(result) # 👉️ 'ABC'

确保替换代码中所有出现的unicodewith 。str

unicode在你的代码中声明一个变量

或者,您可以声明一个unicode变量并将其值设置为
str类。

main.py
import sys if sys.version_info[0] >= 3: unicode = str print(unicode('ABC')) # 👉️ "ABC"

我们的if语句检查 Python 解释器的版本是否大于或等于3,如果是,我们将unicode变量设置为str类。

自 Python 3 以来,该语言使用文本和二进制数据的概念,而不是 Unicode 字符串和 8 位字符串。

Python 中的所有文本都是 Unicode,但是,编码的 Unicode 表示为二进制数据。

使用str类型在 Python 3 中存储文本

您可以使用str类型来存储文本,bytes使用类型来存储二进制数据。

main.py
my_text = 'bobbyhadz.com' my_binary_data = bytes(my_text, 'utf-8') print(my_binary_data) # 👉️ b'bobbyhadz.com'

在 Python 3 中,您不能再u'...'对 Unicode 文本使用文字,因为所有字符串现在都是 Unicode。

但是,您必须b'...'对二进制数据使用文字。

将字符串转换为字节,反之亦然

您可以使用str.encode()to go from strtobytesbytes.decode()to go from bytesto str

main.py
my_text = 'bobbyhadz.com' my_binary_data = my_text.encode('utf-8') print(my_binary_data) # 👉️ b'bobbyhadz.com' my_text_again = my_binary_data.decode('utf-8') print(my_text_again) # 👉️ 'bobbyhadz.com'

str.encode ()方法与Unicode 字符串相反bytes.decode(),它返回以请求的编码编码的 Unicode 字符串的表示形式。bytes

您也可以使用bytes(s, encoding=...)str(b, encoding=...)

main.py
my_text = 'bobbyhadz.com' my_binary_data = bytes(my_text, encoding='utf-8') print(my_binary_data) # 👉️ b'bobbyhadz.com' my_text_again = str(my_binary_data, encoding='utf-8') print(my_text_again) # 👉️ 'bobbyhadz.com'

str类返回给定对象的字符串版本如果未提供对象,则该类返回一个空字符串。

使用
bytes类的语法是相同的,只是b添加了一个前缀。