2012-07-06 77 views
0

有Python中的编解码器,将逃避一切,这是不是在48-57或65-122 ASCII范围(即非字母数字)编码的Python为*仅*字母数字

唯一异常将是一个斜杠和反斜杠字符。

理想情况下,我会想的东西转换是这样的:

/MyString/My#^/Blah/ 

要这样:

/MyString/My\x23\x5e/Blah/ 

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

谢谢!

回答

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/ 
+0

谢谢!我认为这应该可以做到。 – chaimp 2012-07-06 06:54:04

0

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

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

如果你正确地整理了一下编码字符串(即写一个脚本这样做)的翻译应该做的工作。 希望有所帮助。

+0

第一件事情就是来到我的脑海过,但后来考虑这个问题,这将是一个巨大的痛苦写的转换表“的所有字符除了...“ – 2012-07-06 06:05:22