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
unicode
was renamed to str
in Python 3。
main.py
result = str('ABC') print(result) # 👉️ 'ABC'
确保替换代码中所有出现的unicode
with 。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 str
tobytes
和bytes.decode()
to go from bytes
to 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
添加了一个前缀。