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

Python字符串处理:为未带\x的十六进制字节前置\x

解决Python字符串十六进制字节自动补全\x前缀的问题

我来帮你搞定这个字符串处理的需求!你的目标是给每个未带\x前缀的十六进制字节(两个字符一组)加上\x,同时保留已经带有前缀的部分,正则确实是最简洁高效的方案之一,之前没成功大概率是正则模式的细节没处理对,下面是具体的实现方法:

代码实现

import re

# 原始字符串
mystr = r"30336237613131\x90\x01\x0A\x90\x02\x146F6D6D616E64\x90\x01\x06\x90\x02\x0F52656C6174\x90\x01\x02\x90\x02\x50656D31\x90\x00"

# 正则匹配规则:匹配前面没有\x的两个十六进制字符
pattern = r'(?<!\\x)([0-9a-fA-F]{2})'
# 替换为\x加上匹配到的两个字符
result = re.sub(pattern, r'\\x\1', mystr)

print(result)

正则规则解释

  • (?<!\\x):这是负向零宽断言,用来确保当前要匹配的两个字符前面没有\x(因为是raw字符串,所以用\\x表示实际的\x),这样就不会修改已经带前缀的字节。
  • ([0-9a-fA-F]{2}):匹配任意两个十六进制字符(大小写都支持),并用括号捕获为分组,方便后续替换。
  • r'\\x\1':替换时,把捕获到的分组内容(即两个十六进制字符)前面加上\x,同样用raw字符串避免转义问题。

输出结果

运行代码后,你会得到期望的字符串:

\x30\x33\x62\x37\x61\x31\x31\x90\x01\x0A\x90\x02\x14\x6F\x6D\x6D\x61\x6E\x64\x90\x01\x06\x90\x02\x0F\x52\x65\x6C\x61\x74\x90\x01\x02\x90\x02\x50\x65\x6D\x31\x90\x00

这个方案既简洁又能准确处理你的需求,不需要手动遍历字符串做判断,效率也很高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:18:31