将Python字典转换为兼容Content-Type:"application/x-www-form-urlencoded"的字符串

13 投票
3 回答
6933 浏览
提问于 2025-04-17 08:25

我想把一个Python的字典对象转换成一个字符串,这个字符串如果提交为HTML表单数据的话应该是什么样的。

这个字典看起来是这样的:

{
   'v_1_name':'v_1_value'
  ,'v_2_name':'v_2_value'
}

我认为表单字符串应该像这样:

v_1_name=v_1_value&v_2_name=v_2_value

有什么好的方法可以做到这一点吗?

谢谢!

3 个回答

2

在使用Python 2.7的时候,你可能会遇到这个错误:

>>> from urllib.parse import urlencode
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named parse

可以使用 urllib.urlencode 来解决这个问题。

from urllib import urlencode
d = {'v_1_name': 'v_1_value', 'v_2_name': 'v_2_value'}
print urlencode(d)

输出结果

'v_2_name=v_2_value&v_1_name=v_1_value'
2

简单来说,就是遍历这些项目,把每个项目的键和值连接起来,形成一个用'='分隔的键值对,最后用'&'把所有的键值对连接起来。

例如...

If d={'v_1_name':'v_1_value','v_2_name':'v_2_value','v_3_name':'v_3_value'}

然后

'&'.join('='.join([k,v]) for k,v in d.iteritems())

就是

'v_2_name=v_2_value&v_1_name=v_1_value&v_3_name=v_3_value'
19

试试这个 urllib.parse.urlencode

>>> from urllib.parse import urlencode
>>> urlencode({'foo': 1, 'bar': 2})
'foo=1&bar=2'

撰写回答