我试图从查询字符串中删除某些项目,这样做的最佳方法是解析查询字符串,迭代并删除我不想要的特定键并将它们全部加回来。
在python指南之后,他们说使用的urlencode函数似乎无法正常工作。
收取以下代码,该代码只解析查询字符串,然后将其重新连接在一起。我把它设置为保持空值。
>>> f = 'name=John%20Doe&seq=123412412412&wer'
>>> q = urlparse.parse_qs(f, keep_blank_values=True)
>>> q
{'wer': [''], 'name': ['John Doe'], 'seq': ['123412412412']}
>>> urllib.urlencode(q)
'wer=%5B%27%27%5D&name=%5B%27John+Doe%27%5D&seq=%5B%27123412412412%27%5D'
我期待查询代码的结果与f字符串相同。
http://docs.python.org/2/library/urlparse.html#urlparse.parse_qs
Use the urllib.urlencode() function to convert such dictionaries into query strings.
所以我假设我必须遍历q变量并手动构建字符串,在字典的每个项目上调用urlencode?没有更好的方法......
使用python 2.7
由于
答案 0 :(得分:1)
您应该将doseq
参数用于urlencode,因为您的查询中有序列dict:
>>> urllib.urlencode(q, doseq=1)
'wer=&name=John+Doe&seq=123412412412'