python - 为什么 urllib.urlencode 会在我的字典值中添加方括号和单引号?

标签 python

我正在尝试编写一个可以解析 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/

相关文章:

python - "if self:"是什么意思?

python - 为什么这个 Python 生成器/协程会丢失一个值?

python - 如何为环境禁用 `site.ENABLE_USER_SITE`?

python - 当列表中的元组没有返回任何内容时写入错误

python - 奇数字符追加到Python列表的前面

python - 如何编写一个每次运行都给出相同输出的 Python 程序?

python - 算法的时间复杂度

python - Pandas - 将字符串类型转换为 float

python - QT 翻译和 HTML 子集

python - 如何在 python 中获取驱动器的名称