我正在尝试编写一个可以解析 url 并从中获取查询参数的脚本。到目前为止,我基本上已经明白了,但是 urllib.urlencode 在我认为不应该的时候向我的值添加了方括号和单引号。这很可能是我的误解,所以如果有人能解释为什么会发生这种情况以及如何避免这种情况,我将非常感激。这是我的脚本:
#/usr/bin/python
import urlparse
import urllib
url = 'https://mysite.com?Action=ParseUrl'
parsed_url = urlparse.urlparse(url)
query_params = urlparse.parse_qs(parsed_url.query)
query_string = urllib.urlencode(query_params)
print query_string
结果输出是:
Action=%5B%27ParseUrl%27%5D
所以你可以看到 'Action' 的值已经被 urlencoded [' '] 字符包围了。我希望我的 query_string 变量的值为:
Action=ParseUrl
我可以对我的脚本做些什么来实现这一点。我意识到我可以破解某种 reg exp 来删除字符,但我宁愿了解为什么这不能按照我想要的方式工作的根本原因,这样我以后就可以避免这个问题。
谢谢!
最佳答案
参见 documentation notes about parse_qs
(强调):
Parse a query string given as a string argument (data of type application/x-www-form-urlencoded). Data are returned as a dictionary. The dictionary keys are the unique query variable names and the values are lists of values for each name.
你可以自己确认一下:
>>> print query_params
{'Action': ['ParseUrl']}
考虑改用 parse_qsl
。进行该更改后,脚本的其余部分将按照您的预期运行。
关于python - 为什么 urllib.urlencode 会在我的字典值中添加方括号和单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21995976/