我觉得发布这个帖子真的很蠢,但我是Python的新手,而且我不知道PHP,我知道。
我有一个数据字符串,其中包含一个或多个变量,例如:
"var1=value1&var2=value2&var3=value3"
我需要使用urllib将这些数据发送到Web服务器。
我手动格式化POST数据并发送它没有问题,但我无法弄清楚如何使用代码执行此操作,而无需编写复杂的代码。
使用split('&')将此字符串更改为数组非常容易,但那又是什么?
看起来我需要先将数据转换为以下语法,然后再对urllib.urlen进行编码:
{"var1":"value1","var2":"value2","var3":"value3"}
任何建议都将不胜感激!
答案 0 :(得分:2)
Python具有与查询字符串/网址相关的大多数操作的功能。你可以把你的字符串变成一个字典(如下所示)
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'
答案 1 :(得分: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]]
请注意,这是未经测试的代码,我会对此进行测试并回复您。
编辑:经过测试&更新了代码。