在python中编码*仅*字母数字

时间:2012-07-06 05:37:50

标签: python encoding escaping

python中是否有一个编解码器可以逃避不在ascii范围48-57或65-122(即不是字母数字)的所有内容

唯一的例外是斜杠和反斜杠字符。

理想情况下,我想转换这样的内容:

/MyString/My#^/Blah/

对此:

/MyString/My\x23\x5e/Blah/

我知道有一个字符串转义编码可以做类似的事情,但我需要一个自定义的字符范围来编码。我正在寻找能够有效做到这一点的聪明建议或模块。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以将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/

答案 1 :(得分:0)

我没有看过这个,但首先想到的是字符串类翻译功能。

http://docs.python.org/library/string.html#string.translate

如果您正确地将编码字符串放在一起(即编写一个脚本来执行此操作),翻译应该完成这项工作。 希望有所帮助。