【问题标题】: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 从左到右评估表达式。请注意,在评估赋值时,右侧先于左侧评估。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-04
      • 2013-03-27
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 1970-01-01
      相关资源
      最近更新 更多