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

如何将\x转义的ASCII字符串转换为对应单个字符的列表?

解决带转义ASCII字符串转字符列表的问题

这问题我之前处理类似需求时也踩过坑,手动处理转义序列很容易漏情况,不过Python里有几个简单的方案能完美搞定:

方法一:用ast.literal_eval()(最安全可靠)

这个内置方法能正确解析所有Python支持的转义序列,包括十六进制转义(\xaa)、普通转义(\n、\\、\t),而且完全安全,不会像eval()那样执行恶意代码。

示例代码:

import ast

# 你的原始字符串
input_str = '\\xaa\\xaa\\x02\\xba\\x04A\\xaa\\xaa\\x02\\xbc\\x05>\\xaa\\xaa\\x04\\x80\\x02\\xf8\\x00\\x85\\xaa\\xaa\\x04\\x80\\x02\\xf8'

# 先解析转义字符,注意要把字符串包在引号里传给literal_eval
parsed_string = ast.literal_eval(f'"{input_str}"')
# 转换成单个字符的列表
char_list = list(parsed_string)

print(char_list)

运行后就能得到你想要的格式:['\xaa', '\xaa', '\x02', '\xba', '\x04', 'A', ...]

方法二:用编码解码的方式(更简洁)

如果你用的是Python 3.6+,也可以通过编码后再解码的方式处理转义:

input_str = '\\xaa\\xaa\\x02\\xba\\x04A\\xaa\\xaa\\x02\\xbc\\x05>\\xaa\\xaa\\x04\\x80\\x02\\xf8\\x00\\x85\\xaa\\xaa\\x04\\x80\\x02\\xf8'

# 先编码成字节,再用unicode-escape解码处理转义
parsed_string = input_str.encode('utf-8').decode('unicode-escape')
char_list = list(parsed_string)

这个方法更短,但要注意如果字符串里包含一些特殊的Unicode字符,可能需要调整编码,不过处理普通ASCII转义完全没问题。

为什么手动处理容易失效?

因为转义序列的类型太多了:除了你提到的十六进制转义,还有八进制转义(\123)、普通转义(\n、\\)、Unicode转义(\u00a9)等,手动写逻辑很容易遗漏某一种情况,而内置方法已经帮我们覆盖了所有Python规范里的转义场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:47:44