TypeError:无法在 Python 中将 str 连接到字节

TypeError:无法在 Python 中将 str 连接到字节

TypeError: can’t concat str to bytes in Python

当我们尝试连接字节对象和字符串时,会出现 Python“TypeError: can’t concat str to bytes”。要解决该错误,请在连接字符串之前将字节对象解码为字符串。

typeerror 无法将 str 连接到字节

下面是错误如何发生的示例。

主程序
my_bytes = b'hello ' my_str = 'world' # ⛔️ TypeError: can't concat str to bytes result = my_bytes + my_str
我们尝试使用加法 (+) 运算符连接字节对象和导致错误的字符串。

左侧和右侧的值需要是兼容的类型。

解决错误的一种方法是将字节对象转换为字符串。

主程序
my_bytes = b'hello ' my_str = 'world' # 👇️ decode bytes object result = my_bytes.decode('utf-8') + my_str print(result) # 👉️ "hello world"

bytes.decode
方法返回从给定字节解码的字符串
默认编码是
utf-8.

或者,您可以将字符串编码为字节对象。

主程序
my_bytes = b'hello ' my_str = 'world' result = my_bytes + my_str.encode('utf-8') print(result) # 👉️ b"hello world"

str.encode方法将字符串
的编码版本作为字节对象返回。
默认编码是
utf-8.

无论哪种方式,您都必须确保加法 (+) 运算符左右两侧的值是兼容的类型(例如,两个字符串)。

一旦将 bytes 对象转换为字符串,就可以使用
格式化字符串文字

主程序
# 👇️ decode bytes object my_bytes = b'hello '.decode('utf-8') my_str = 'world' result = f'{my_bytes} {my_str}' print(result) # "hello world"
格式化字符串文字 (f-strings) 让我们通过在字符串前加上f.

确保将表达式括在大括号 –{expression}中。

如果不确定变量存储的类型,请使用内置type()类。

主程序
# 👇️ decode bytes object my_bytes = b'hello ' print(type(my_bytes)) # 👉️ <class 'bytes'> print(isinstance(my_bytes, bytes)) # 👉️ True my_str = 'world' print(type(my_str)) # 👉️ <class 'str'> print(isinstance(my_str, str)) # 👉️ True

类型类返回对象的类型

如果传入的对象是传入类的实例或子类,则isinstance
函数返回。
True

结论

当我们尝试连接字节对象和字符串时,会出现 Python“TypeError: can’t concat str to bytes”。要解决该错误,请在连接字符串之前将字节对象解码为字符串。