【问题标题】:Getting error while encoding str in UTF8 format以 UTF8 格式编码 str 时出错
【发布时间】:2017-12-11 06:05:47
【问题描述】:
这是工作代码。
line = 'line'
another_line = 'new ' + line
another_line.encode('utf-8')
输出
b'new line'
现在我想弄清楚为什么我在 python3 中得到以下代码的错误,而在 python2 中得到连接字符串?。
line = 'line'
'new '+line.encode('utf-8')
TypeError: 无法将 'bytes' 对象隐式转换为 str
【问题讨论】:
标签:
string
python-2.7
python-3.x
【解决方案1】:
由于错误状态,Python3 不会自动将字节类型转换为字符串(+ 运算符首先看到一个字符串,因此也希望在右边有一个字符串)隐式(自动)所以你需要明确地告诉它这样做。
line = 'line'
print('new '+str(line.encode('utf-8')))
请注意,这会产生略有不同的输出。
如果您想要完全相同的输出,那么这可行:
line = 'line'
print('new '.encode('utf-8')+line.encode('utf-8'))
来自docs
“+(加法)运算符产生其参数的总和。参数必须要么都是数字,要么都是相同类型的序列。在前一种情况下,数字被转换为公共类型,然后加在一起. 在后一种情况下,序列是串联的。”和“Python 从左到右评估表达式。请注意,在评估赋值时,右侧先于左侧评估。”