我有一个十六进制字符串,我需要通过检查''是否在值中来比较字符串然后执行编码操作
value='\x1a\x01' (Pdb) value.encode("hex") '1a01'
但是当我像这样检查它返回假
(Pdb) '\\' in value False
您可以使用re.sub对x转义序列进行编码 .
首先,定义一个捕获这些序列的正则表达式 .
import re pattern = re.compile(r'\\x[0-9a-fA-f]{2}') # matches \x and two-digit hex value
请注意, \x 需要进行转义,以便重新编译器不会将其拒绝为伪造的正则表达式转义序列 .
\x
现在定义一个将匹配序列编码的函数 .
def enc(match): return match.group(0).decode('string-escape').encode('hex')
编码时,我们需要先从'string-escape'解码,因为我们需要转义输入字符串,以便 \x.. 序列匹配 .
\x..
现在对输入字符串的字符串转义版本执行替换,记住之后解码输出(否则将转义像 \n 这样的序列):
\n
s = 'abc\x1a\x01def' escaped = re.sub(pattern, enc, s.encode('string-escape')) result = escaped.decode('string-escape') print result abc1a01def
1 回答
您可以使用re.sub对x转义序列进行编码 .
首先,定义一个捕获这些序列的正则表达式 .
请注意,
\x
需要进行转义,以便重新编译器不会将其拒绝为伪造的正则表达式转义序列 .现在定义一个将匹配序列编码的函数 .
编码时,我们需要先从'string-escape'解码,因为我们需要转义输入字符串,以便
\x..
序列匹配 .现在对输入字符串的字符串转义版本执行替换,记住之后解码输出(否则将转义像
\n
这样的序列):