2024-06-06 22:39:14 发布
网友
在这里,我想用\x替换# 但是当我打印h时,它不会给出与打印y时相同的结果
有人对此有解释和解决办法吗?你知道吗
s = "#53ule#69#6dan" y = "\x53ule\x69\x6dan" f = s.replace("#","\\x") print f h = f.decode() print h print y.decode()
y中的\x不是后跟x字符的实际反斜杠字符,而是escape sequence的开头。你知道吗
y
\x
x
整个序列"\x53"是"S"(因为"S"在ASCII中是0x53)。类似地,"\x69"是"i","\x6d"是"m"。你知道吗
"\x53"
"S"
0x53
"\x69"
"i"
"\x6d"
"m"
当您执行replace调用来计算f时,不会得到转义序列,而是一个实际的反斜杠字符,后跟一个x字符。你知道吗
replace
f
我不确定从十六进制字符串到常规字符串是否有一个完全直接的方法,但是这个正则表达式替换将在int和chr的帮助下实现这一点:
int
chr
re.sub("#(..)", lambda match: chr(int(match.group(1), 16)), s)
re.sub("#([A-Fa-f0-9]{2})",lambda m:unichr(int(m.groups()[0],16)),"#53ule#69#6dan")
可能就是你要找的。。。你知道吗
y
中的\x
不是后跟x
字符的实际反斜杠字符,而是escape sequence的开头。你知道吗整个序列
"\x53"
是"S"
(因为"S"
在ASCII中是0x53
)。类似地,"\x69"
是"i"
,"\x6d"
是"m"
。你知道吗当您执行
replace
调用来计算f
时,不会得到转义序列,而是一个实际的反斜杠字符,后跟一个x
字符。你知道吗我不确定从十六进制字符串到常规字符串是否有一个完全直接的方法,但是这个正则表达式替换将在
int
和chr
的帮助下实现这一点:可能就是你要找的。。。你知道吗
相关问题 更多 >
编程相关推荐