python中是否有一个编解码器可以转义不在48-57或65-122的ascii范围内的所有内容(即不是字母数字)
唯一的例外是斜杠和反斜杠字符。
理想情况下,我想转换这样的东西:
/MyString/My#^/Blah/
对此:
/MyString/My\x23\x5e/Blah/
我知道有类似的字符串转义编码,但我需要一个自定义的字符范围进行编码。我正在寻找可以有效执行此操作的巧妙建议或模块。
谢谢!
您可以使用re.sub
这样的函数参数:
s = "/MyString/My#^/Blah/"
import re
print re.sub(r'[^\w/\\]', lambda m: '\\x%x' % ord(m.group(0)), s)
#/MyString/My\x23\x5e/Blah/
我没有研究这个,但首先想到的是字符串类翻译函数。
http://docs.python.org/library/string.html#string.translate
如果你正确地把你的编码字符串放在一起(即编写一个脚本来这样做),翻译应该可以完成这项工作。希望有帮助。