0

我觉得不得不发布这个真的很愚蠢,但我是 Python 的新手,它不像我知道的 PHP。

我有一串数据,其中包含 1 个或多个变量,例如:

"var1=value1&var2=value2&var3=value3"

我需要使用 urllib 使用 POST 将此数据发送到 Web 服务器。

我手动格式化 POST 数据并发送它没有问题,但是我无法弄清楚如何使用代码执行此操作,而无需编写复杂的代码。

使用 split('&') 把这个字符串变成一个数组是很容易的,但是然后呢?

看起来我需要将数据转换为以下语法,然后才能对其进行 urllib.urlencode:

{"var1":"value1","var2":"value2","var3":"value3"}

任何建议将不胜感激!

4

2 回答 2

2

Python 具有用于大多数操作的函数,您将不得不使用查询字符串/url。你可以把你的字符串变成一个字典(如下所示)

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> qs = "var1=value1&var2=value2&var3=value3"
>>> from urlparse import parse_qs
>>> parse_qs(qs)
{'var1': ['value1'], 'var3': ['value3'], 'var2': ['value2']}
>>> data_dict = parse_qs(qs)      
>>> import urllib
>>> post_data_str = urllib.urlencode(data_dict)
>>> post_data_str
'var1=%5B%27value1%27%5D&var3=%5B%27value3%27%5D&var2=%5B%27value2%27%5D'
于 2013-03-13T17:52:00.810 回答
2

您可以使用 split('&') 分解变量,然后遍历结果列表并使用 split('=') 分解每个变量及其单独的值,然后将这些值插入到空字典中。就像是:

myDataString = "var1=value1&var2=value2&var3=value3"
mySplitData = myDataString.split('&')

import collections
myDict = collections.defaultdict(list)

for value in mySplitData:
    splitValue = value.split('=')
    myDict[splitValue[0]]

请注意,这是未经测试的代码,我将对此进行测试并回复您。

编辑测试并更新了代码。

于 2013-03-13T18:09:07.727 回答