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

如何读取文件中带b'前缀的bytes格式内容并转为UTF-8中文

解决方法

你的问题核心是:test.txt中存储的不是二进制字节数据,而是表示Python bytes字面量的字符串(比如b'\xe5\x95\x8a...'),所以直接用二进制模式读取后得到的是包含这些字符的字符串/字节,无法直接解码。

需要先把这个字符串转换成真实的bytes对象,再解码为中文,具体实现代码如下:

import ast

input_file = "test.txt"

with open(input_file, 'r', encoding='utf-8') as f:
    # 读取文件内容并清理格式:去掉开头的b、首尾的引号和换行
    raw_content = f.read().strip()
    cleaned_content = raw_content.lstrip('b').strip('\'"')
    # 用ast.literal_eval安全解析为bytes对象(避免eval的安全风险)
    byte_data = ast.literal_eval(f"b'{cleaned_content}'")
    # 解码为UTF-8中文
    print(byte_data.decode('utf-8'))

关键说明

  1. 为什么不用rb模式?:文件里的b'\xe5\x95\x8a'是文本字符,不是真正的二进制字节,用rb读出来的是这些字符的二进制编码(比如UTF-8编码的b、'、\等字符),完全不是你需要的中文对应的字节。
  2. 为什么用ast.literal_eval?:它能安全地将字符串形式的Python字面量(比如bytes、列表、字典)转换为真实对象,比直接用eval更安全,避免恶意代码执行风险。
  3. 如果文件有多行?:可以循环读取每一行,重复上述清理和解析步骤即可。

运行上述代码后,就能得到你期望的输出:

啊 有 什 么 事 啊 有 什 么 事 给 我 打 电 话 啊 嗯 嗯 好 好 好 好 再 见 哎 再 见 嗯 好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:06:34