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

如何读取CSV中字节表示为bytes类型及十六进制转字节方法咨询

我来帮你解决这两个问题——从CSV读取b'...'格式的字符串转为真实bytes对象,以及十六进制转字节的方法,都是Python里很实用的操作:

1. 解析CSV中b'...'格式的字符串为bytes类型

你提到手动复制b'...'到变量能直接用,但从CSV读出来是字符串形式,这时候用ast.literal_eval()是最安全可靠的方法,它能解析Python的字面量表达式,而且比eval()安全(不会执行恶意代码)。

举个完整的读取CSV并转换的例子:

import ast
import csv

# 读取CSV文件
with open('your_data.csv', 'r', encoding='utf-8', newline='') as csv_file:
    reader = csv.reader(csv_file, delimiter=';')
    for text_val, byte_str in reader:
        # 把字符串形式的b'...'转换成真实的bytes对象
        actual_bytes = ast.literal_eval(byte_str)
        print(f"文本值: {text_val}, 字节类型: {type(actual_bytes)}, 字节内容: {actual_bytes}")

运行后actual_bytes就是真正的bytes类型,和你手动复制的效果完全一样。

2. 十六进制字符串转字节

Python有两种常用方式实现这个转换:

  • 方法一:使用bytes.fromhex()(推荐,无需额外导入)
    这个方法直接把十六进制字符串转为bytes,注意十六进制字符串要成对出现(不能是奇数长度):
hex_str = "5554050003"  # 对应b'UT\x05\x00\x03'的十六进制表示
byte_data = bytes.fromhex(hex_str)
print(byte_data)  # 输出 b'UT\x05\x00\x03'
  • 方法二:使用binascii.unhexlify()
    如果需要处理一些特殊场景,也可以用binascii模块的方法:
import binascii

hex_str = "5554050003"
byte_data = binascii.unhexlify(hex_str)
print(byte_data)  # 同样输出 b'UT\x05\x00\x03'

如果你的十六进制字符串里有空格或者其他分隔符,记得先清理掉,比如hex_str.replace(" ", "")再转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:14:09