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

Python如何将字节串形式的字符串转为原始字节串并生成十六进制值

问题根因
  • 你之前导出CSV时添加的escapechar='\\'参数是问题根源:该参数会将原始bytes字面量里的转义反斜杠二次转义,pandas读取后得到的是bytes对象的字符串表示(repr结果),而非真实的bytes类型值
  • 直接对该字符串做encode操作会把外层的b'包裹符、引号、二次转义的反斜杠一起编码,自然无法得到正确结果
  • 你临时用的eval方案虽然能跑,但存在任意代码执行风险,且纯Python实现的eval在600万条数据量级下性能很差,不推荐使用
最优解决方案

使用Python标准库ast模块的literal_eval方法,这是专门用于安全解析Python基础字面量的实现,无安全风险,且C层面的实现性能远高于eval,完全适配你的场景。

单值测试代码

import ast

test_id = "b'>\\xc8\\xb4hq\\x14K\\xb7\\xad\\xb0\\x9e\\xda\\x86Q\\xfaV'"
# 先把字符串还原成真实bytes,再转hex
correct_hex = ast.literal_eval(test_id).hex()
# 输出结果:3ec8b46871144bb7adb09eda8651fa56,完全符合预期

600万条数据批量处理(pandas向量化操作)

不需要写显式for循环,直接用pandas的apply批量处理整列,600万条数据在普通PC上数秒即可跑完:

import pandas as pd
import ast

# 替换成你的文件路径和ID列的实际列名
df = pd.read_csv("your_exported.csv")
df["uuid_hex"] = df["YOUR_ID_COLUMN_NAME"].apply(lambda s: ast.literal_eval(s).hex())

# 后续如果需要保存处理结果,直接导出即可
df.to_csv("processed_result.csv", index=False)
后续导出避坑

后续导出包含bytes类型字段的DataFrame到CSV时,提前把bytes列转成hex字符串再导出,就不会出现转义错乱、类型丢失的问题:

# 导出前预处理bytes列
dump_frame["uuid_col"] = dump_frame["uuid_col"].apply(
    lambda x: x.hex() if isinstance(x, bytes) else x
)
# 不需要加escapechar参数即可正常导出
dump_frame.to_csv("correct_export.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:57:26