0

我有值列表:

md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']

我想将它们连接成一个查询字符串

'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'

最好的方法是什么?

4

3 回答 3

13

由于您正在构建查询字符串,因此最好使用专门设计用于执行此操作的标准库中的函数:

...而不是乱七八糟str.join()。下面是你如何使用它:

from urllib.parse import urlencode # Python 3
# from urllib import urlencode # Python 2

md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']
urlencode([("md5", x) for x in md5])

结果:

'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'

或者(感谢Python 聊天室中的 Jon Clements ),您可以将字典传递给 urlencode 和参数doseq=True

urlencode({'md5': md5}, doseq=True)

...产生相同的结果。这在上面链接的文档中进行了解释:

value 元素本身可以是一个序列,在这种情况下,如果可选参数doseq的计算结果为True,则为 key 的 value 序列的每个元素生成单独key=value的对。'&'编码字符串中的参数顺序将匹配序列中参数元组的顺序。

于 2013-05-10T23:09:06.567 回答
5
md5s = '&'.join('md5='+m for m in md5)

括号内的部分是一个生成器表达式,它为您'md5='+m提供原始列表中的每个m

join函数采用该表达式并将其链接到一个大字符串中,&在每对之间放置一个。

于 2013-05-10T23:05:58.250 回答
0

您可以使用join()

md5=['1111','3333','44444','555555','56632423','23423514','2342352323']
print 'md5=' + '&md5='.join(md5)
于 2013-05-10T23:05:05.383 回答