2017-10-04 70 views
0

我有一個字符串列表。格式化urllib的編碼輸出quote_plus

category_list = "[u'Automation', u' Card Readers & POS']" 
現在

,我執行下述操作

category_list = urllib.quote_plus(category_list, safe=':/'.encode('utf-8')) 

我的編碼數據發佈到網絡和在解碼列表的輸出格式是這樣的下方。

[u\'Automation\', u\' Card Readers & POS\'] 

這是不正確的API格式,我需要將列表轉換爲下面的格式(刪除\)。

['Automation', ' Card Readers & POS'] 

請幫助我一樣。

+0

解釋爲什麼源數據首先是一個字符串。 –

+0

得到這個錯誤AttributeError:'list'對象在沒有字符串的情況下嘗試編碼時沒有屬性'rstrip' –

+0

正確但是如果你想從數據中移除'u'元素,那麼你需要在沒有這些元素的情況下進行轉換。因此,請顯示您從哪裏獲取數據以及如何將其轉換爲字符串。 –

回答

0

你正在做錯事。您在request.GET中獲得了一個字符串,您的框架將其轉換爲unicode。通過直接將該字符傳遞給str,您的Unicode字符將成爲該字符串的一部分; quote_plus可以做的沒有什麼可以解決這個問題。所以,相反,你需要在編碼之前進行編碼。

search_cat = request.GET['category'].encode('utf-8').split(',') 
urllib.quote_plus(str(search_cat), safe=':/') 

不過要注意一個更好的解決辦法是讓你切換到Python 3,所有的字符串都是Unicode和u前綴標記不存在。

+0

我還在得到相同的錯誤。 :( –