如何将Python3 encode()方法的编码结果保存为字符串?
解决方法
你需要的是获取bytes对象的字面量转义序列字符串,而非还原原字符串或直接转换bytes为字符串。可以通过以下方式实现:
方案:利用repr()切片提取
repr()函数会返回bytes对象的标准字面量表示(即b'xxx'格式),只需去掉首尾的b'和'部分就能得到目标字符串:
toto = 'récépissé.pdf'.encode('utf-8') # 提取中间的转义序列字符串 target_str = repr(toto)[2:-1] print(target_str) # 输出: r\xc3\xa9c\xc3\xa9piss\xc3\xa9.pdf # 查看字符串的实际表示(确认转义序列正确) print(repr(target_str)) # 输出: 'r\\xc3\\xa9c\\xc3\\xa9piss\\xc3\\xa9.pdf'
原理说明
str(toto)会返回带b'前缀的字符串(如"b'r\xc3\xa9c\xc3\xa9piss\xc3\xa9.pdf'"),不符合需求;toto.decode('utf-8')会将bytes解码回原Unicode字符串('récépissé.pdf'),也不是你要的结果;repr(toto)返回bytes的官方字面量形式,切片[2:-1]精准去掉了开头的b'和结尾的',正好得到你需要的转义序列字符串,可直接用于Dropbox API的请求头传递。
内容的提问来源于stack exchange,提问作者NiBo
相关产品推荐
相关产品推荐

