在字符串中添加前缀“b”会将其转换为字节:
b'example'
但我无法弄清楚如何用变量做到这一点。假设string = 'example'
,这些似乎都不起作用:
b(string)
b string
b'' + string
有一种简单的方法吗?
答案 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