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

使用Python2.7使用十六进制表示法对字符串中的特定字符进行编码/解码,python,string,decode,encode,Python,String,Decode,Encode,如何对字符串“banana”进行编码,使所有a都变成这样 b\x97n\x97n\x97 那么,如何将嵌入十六进制值的字符串反转或解码回原始字符串香蕉?使用str.replace将该字符替换为其序数值的十六进制表示形式。要恢复实际字符串,可以使用string decode对其进行解码 >>> s = 'banana' >>> print s.replace('a', '\\x' + format(ord('a'), 'x')) b\x61n\x61n\x61

如何对字符串“banana”进行编码,使所有a都变成这样

b\x97n\x97n\x97

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

使用
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

在ubuntu上,我得到了“\\x”@chris,你看到的是字符串的
repr
版本。如何将其反转回香蕉?打印“\x97”会给我一个不可打印的字符。。。您的意思是使用“chr(“\x97”)”对吗?谢谢Metal3d。。。我更正了密码above@panofish打印“a”应该是打印“\x61”。@Ashwini。。。更新…@panofish那么,你还想要\x97?