使用Python2.7使用十六进制符号对字符串中的特定字符进行编码/解码

2024-09-30 20:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何对字符串“banana”进行编码,使所有a都变成\x97?在

b\x97n\x97n\x97

那么,如何将嵌入十六进制值的字符串反转或解码回原始字符串banana?在


Tags: 字符串编码解码bananax97x97n
2条回答

使用str.replace将该字符替换为其序数值的十六进制表示。为了得到实际的字符串,可以使用string-decode对其进行解码。在

>>> s = 'banana'
>>> print s.replace('a', '\\x' + format(ord('a'), 'x'))
b\x61n\x61n\x61
>>> print s.replace('a', '\\x' + format(ord('a'), 'x')).decode('string-escape')
banana

要做到这一点并保持编码为标准ASCII而不是十六进制。。。在

import re
s = 'banana'
t = s.replace('a', '\\x{}'.format(ord('a')))
subs = re.findall(r'\\x\d{2}',t)
decoded = ""
for match in set(subs):
    decoded = t.replace(match, chr(int(match[2:4]))
print decoded

相关问题 更多 >