2017-07-07 91 views
0

This is working code.得到错误,而在UTF8编码格式STR

line = 'line' 
another_line = 'new ' + line 
another_line.encode('utf-8') 

output

b'new line' 

现在,我试图找出为什么我收到错误的下面的代码在python3 VS我得到连接字符串在python2中?

line = 'line' 
'new '+line.encode('utf-8') 

TypeError: Can't convert 'bytes' object to str implicitly

回答

1

由于错误状态,Python3不会字节型自动转换为字符串(+运营商第一次看到一个字符串,所以要在右边的字符串为好)隐含(自动),这样你需要明确告诉它这样做。

line = 'line' 
print('new '+str(line.encode('utf-8'))) 

请注意,这会产生稍微不同的输出。

如果你想完全相同的输出,那么这个工程:

line = 'line' 
print('new '.encode('utf-8')+line.encode('utf-8')) 

docs

“的+(加)运算符生成它的参数的总和的参数必须同时为数字。或者两者都是相同类型的序列,在前一种情况下,数字被转换为通用类型然后相加在一起,后一种情况下,序列被连接在一起。和“Python从左到右评估表达式。注意,在评估一个赋值时,右边在左边之前被评估。”