在python变量中添加“b”前缀?

时间:2013-10-22 07:16:52

标签: python python-3.x byte

在字符串中添加前缀“b”会将其转换为字节:

b'example'

但我无法弄清楚如何用变量做到这一点。假设string = 'example',这些似乎都不起作用:

b(string)
b string
b'' + string

有一种简单的方法吗?

5 个答案:

答案 0 :(得分:29)

# only an example, you can choose a different encoding
bytes('example', encoding='utf-8')

在Python3中:

  

字节文字总是以'b'或'B'为前缀;他们生产了一个   字节类型的实例而不是str类型。他们可能只是   包含ASCII字符;数字值为128或更大的字节   必须用逃避来表达。

在Python2中:

  

Python 2中忽略了'b'或'B'的前缀;它表明了   literal应该成为Python 3中的字节文字。

有关bytes()的更多信息:

  

bytes([source [,encoding [,errors]]])

     

返回一个新的“bytes”对象,它是一个不可变的序列   0 <= x <0的范围内的整数256. bytes是一个不可变的版本   bytearray - 它具有相同的非变异方法和相同的索引   和切片行为。

     

因此,构造函数参数被解释为bytearray()。

     

也可以使用文字创建字节对象,请参阅字符串和字节   文字。

答案 1 :(得分:5)

使用bytes()

>>> bytes("hello", encoding="ascii")
b'hello'

答案 2 :(得分:1)

function getKeysDeep(obj, arr = []) {
  Object.keys(obj).forEach(key => {
    if (typeof obj[key] === 'object' && !Array.isArray(obj[key]) && obj[key] !== null) {
      arr = this.getKeysDeep(obj[key], arr);
    }
  });
  return arr.concat(Object.keys(obj));
}
getKeysDeep(myobj);

其中'string'是你的变量。

答案 3 :(得分:0)

或使用bytes.decode()方法转换为string(使用给定的编码):

>>> b'hello'.decode('utf-8')
'hello'

相反的转换是str.encode()string转换为bytes

>>> 'hello'.encode('utf-8')
b'hello'

答案 4 :(得分:0)

我已经检查了很长时间,我认为将字符串转换为变量的最佳方法是使用vars()

vars()['变量名'] =要分配的值

vars()['created_variable'] = 1
print(created_variable)
>> 1