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

如何将Pandas读取CSV得到的字符串转为原始字节供np.frombuffer使用

解决方案

方法1:使用ast.literal_eval(通用安全方案)

该方法可直接解析Python字面量格式的转义字符串,无需手动处理转义规则,安全性远高于原生eval,适合格式不固定的转义字节串场景。
示例代码:

import ast
import numpy as np

# 从DataFrame中取出转义字符串
data = df.data[x]
# 解析为原始字节
raw_bytes = ast.literal_eval(f"b'{data}'")
# 转换为numpy数组
v = np.frombuffer(raw_bytes, dtype=np.uint8)
print(v) # 输出 array([0, 0], dtype=uint8)

如果字符串中可能包含单引号,可改用双引号包裹:

raw_bytes = ast.literal_eval(f'b"{data}"')

方法2:使用bytes.fromhex(高性能批量处理方案)

如果你的字节串固定为\x加两位十六进制的格式,可以先移除所有\x标记得到纯十六进制字符串,再直接转换为字节,该方法处理速度更快,适合大体积数据批量转换。
示例代码:

import numpy as np

data = df.data[x]
# 移除所有\x标记,得到纯十六进制串
hex_str = data.replace(r'\x', '')
# 转换为原始字节
raw_bytes = bytes.fromhex(hex_str)
# 转换为numpy数组
v = np.frombuffer(raw_bytes, dtype=np.uint8)
print(v) # 输出 array([0, 0], dtype=uint8)

两种方案都可以将你示例中的转义字符串\x00\x00转为原始字节b'\x00\x00',最终得到目标uint8数组。

内容的提问来源于stack exchange,提问作者Jorge García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:39:01