从Python中的Base64编码字符串获取字符串
我需要用Python向一个REST服务器发送请求。在请求的头部认证中,我需要包含一个经过Base64编码的字符串。
我使用base64模块来实现这个:
import base64
#node here is '3180' but I also tried with text
node = base64.b64encode(node.encode('utf-8'))
node = 'Basic ' + str(node)
headers = {'Content-type': 'application/json', 'Authentication': node}
print(headers)
然后我打印出来的结果是:
{'Authentication': "Basic b'MzE4MA=='", 'Content-type': 'application/json'}
这个结果中有b' ... '
这样的字符加在了Base64字符串前面。我想知道有没有办法让这些字符不出现?我不确定它们只是打印出来的,还是也会发送到服务器。
1 个回答
4
b64encode
返回的是 bytes
类型,而不是 str
类型。当你直接用 str()
去处理它,而没有指定编码时,得到的不是你想要的字符串,而是 Python 对这个字节对象的表示,比如 b'MzE4MA=='
。
为了避免这个问题,可以使用 node = 'Basic ' + node.decode('ascii')
这样的写法。
另外,你也可以用 str(node, encoding='ascii')
,不过这样写会稍微长一些。