2012-07-06 47 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