2017-10-04 43 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

我还在得到相同的错误。 :( –