2013-07-18 189 views
-2

我試圖編碼一個字符串包含' - '(減號)符號到iso8859-15,它會返回字符串,因爲它是。 爲如:Python:編碼特殊字符

str="abc-def" 

預期輸出是

abc%2Ddef 

有沒有辦法做到這一點?對不起,如果我的問題是錯誤的。

+1

這不是拉丁-1編碼。您可能想要了解哪些編碼*是*。 :-) –

+2

不要命名變量'str';掩蓋了內置的類型。 –

回答

1

你的輸出樣本建議您正在尋找URL編碼,不是Latin-1的。

urllib.quote()urllib.quote_plus()功能,可以用來做這樣的報價,但-性格確實不需要報價並不會被引用:

使用%xx替換特殊字符逃逸。字母,數字和字符'_.-'從不引用。

演示:

>>> from urllib import quote 
>>> quote('abc-def') 
'abc-def' 
>>> quote('some data that needs quoting!') 
'some%20data%20that%20needs%20quoting%21' 

如果您正在使用Python 3,quotequote_plus功能在urllib.parse module找到。

+0

是的,我正在尋找網址編碼。 – upv

1

ya。

from urllib.parse import quote 
st = "abc-def" 
encoded = quote(st) 
+1

爲了記錄,'urllib.parse'是一個Python 3模塊。在Python 2中,'quote'在'urllib'中(沒有子模塊)。 –

+0

對不起,這將是報價。我的錯 !改變了我的代碼。 – rnbcoder