You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3:如何将字节串转为字符串(不解码且去除b前缀)

解决字节串转成无b前缀的原始字符串问题

你想要的其实是获取字节串的表示字符串(就是打印时带b'...'的内容),去掉开头的b前缀后的结果,而非真正的解码(解码需要指定编码格式,还可能出现解码错误)。这里有个简单直接的方法:

  • 使用repr()函数获取字节串的官方语法表示,再去掉开头的b'(或b")和结尾的单/双引号。

具体示例代码

def bytes_to_raw_display_str(bytestr):
    repr_str = repr(bytestr)
    # 兼容单引号和双引号的表示情况
    if repr_str.startswith(("b'", 'b"')):
        return repr_str[2:-1]
    return repr_str

# 测试你的目标示例
my_bytestring = b'\xb5\xb5\xb5\xb5\r\n1'
result = bytes_to_raw_display_str(my_bytestring)
print(result)  # 输出: \xb5\xb5\xb5\xb5\r\n1

# 再测试你提到的PDF字节串例子
pdf_bytes = b'%PDF-1.4\n%\x93\x8c\x8b\x9e'
pdf_result = bytes_to_raw_display_str(pdf_bytes)
print(pdf_result)  # 输出: %PDF-1.4\n%\x93\x8c\x8b\x9e

为什么这个方法可行?

repr()函数会自动把字节串转换成符合Python语法的字符串表示:非ASCII字节、控制字符会被转成\xhh、\r、\n这类转义序列,可打印的ASCII字符则直接保留。这正好和你想要的“去掉b前缀后显示的字符串”完全匹配。

你之前遍历字节串得到整数列表的问题,是因为Python中遍历字节串时,每个元素都是字节对应的十进制整数(比如b'\xb5'遍历出来是181),直接拼接自然会得到数字字符串,这显然不是你要的结果。而上面的方法直接利用了Python内置的字节串表示逻辑,简单又可靠。


内容的提问来源于stack exchange,提问作者Yobmod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:40:59