如何去除Base64解码输出中的b''标识?
解决base64解码后输出字节类型(带b'')的问题
运行以下Python代码:
import base64 a = "aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTA2MTQ2NzIxNDI2MTI2MDMwOC9wNklOLWgzVkRGSEo1UVIyNDVSXy1NUFlWZ2xfU2tRZ3RUemVPMUN2SGlUZlBSMEExSjhOQUdHVmt0NU1sZzhrYXVkRg==" hook = base64.b64decode(a) print(hook)返回结果为:
b'https://discord.com/api/webhooks/1061467214261260308/p6IN-h3VDFHJ5QR245R_-MPYVgl_SkQgtTzeO1CvHiTfPR0A1J8NAGGVkt5Mlg8kaudF'需要仅返回字符串
https://discord.com/api/webhooks/1061467214261260308/p6IN-h3VDFHJ5QR245R_-MPYVgl_SkQgtTzeO1CvHiTfPR0A1J8NAGGVkt5Mlg8kaudF,而非带b''的字节形式。
解决办法
方法1:调用字节对象的decode()方法
base64解码后得到的是字节对象,调用decode()方法可将其转为字符串,默认使用UTF-8编码,适配URL这类文本:
import base64 a = "aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTA2MTQ2NzIxNDI2MTI2MDMwOC9wNklOLWgzVkRGSEo1UVIyNDVSXy1NUFlWZ2xfU2tRZ3RUemVPMUN2SGlUZlBSMEExSjhOQUdHVmt0NU1sZzhrYXVkRg==" hook = base64.b64decode(a).decode() # 追加decode()方法 print(hook)
方法2:解码时指定encoding参数(Python 3.10+)
从Python 3.10开始,base64.b64decode()支持直接传入encoding参数,一步生成字符串:
import base64 a = "aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTA2MTQ2NzIxNDI2MTI2MDMwOC9wNklOLWgzVkRGSEo1UVIyNDVSXy1NUFlWZ2xfU2tRZ3RUemVPMUN2SGlUZlBSMEExSjhOQUdHVmt0NU1sZzhrYXVkRg==" hook = base64.b64decode(a, encoding='utf-8') # 指定编码参数 print(hook)
方法3:打印时直接转换类型
如果不想修改变量本身的类型,可在打印环节直接转换为字符串:
import base64 a = "aHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvMTA2MTQ2NzIxNDI2MTI2MDMwOC9wNklOLWgzVkRGSEo1UVIyNDVSXy1NUFlWZ2xfU2tRZ3RUemVPMUN2SGlUZlBSMEExSjhOQUdHVmt0NU1sZzhrYXVkRg==" hook = base64.b64decode(a) print(str(hook, encoding='utf-8')) # 转换为字符串后打印
内容的提问来源于stack exchange,提问作者DeVYuvi
相关产品推荐
相关产品推荐

