Soo*_*Nam 0 python query-string
我有值列表:
md5 = ['1111', '3333', '44444', '555555', '56632423', '23423514', '2342352323']
Run Code Online (Sandbox Code Playgroud)
我想将它们连接成一个查询字符串:
'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
Zer*_*eus 12
由于您正在构建查询字符串,因此最好使用标准库中专门设计的函数:
urllib.parse.urlencode() (在Python 3中)urllib.urlencode() (在Python 2中)...而不是捣乱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])
Run Code Online (Sandbox Code Playgroud)
结果:
'md5=1111&md5=3333&md5=44444&md5=555555&md5=56632423&md5=23423514&md5=2342352323'
Run Code Online (Sandbox Code Playgroud)
或者(感谢Python聊天室中的Jon Clements ),您可以将字典传递给urlencode和参数doseq=True:
urlencode({'md5': md5}, doseq=True)
Run Code Online (Sandbox Code Playgroud)
......产生相同的结果.这在上面链接的文档中进行了解释:
值元素本身可以是一个序列,在这种情况下,如果可选参数doseq的计算结果为True,则为键的值序列的每个元素生成
key=value单独的分隔对'&'.编码字符串中的参数顺序将与序列中参数元组的顺序匹配.
md5s = '&'.join('md5='+m for m in md5)
Run Code Online (Sandbox Code Playgroud)
括号内的部分是一个生成器表达式,它为您'md5='+m提供m原始列表中的每个表达式.
该join函数接受该表达式并将其链接到一个大字符串中,&在每个字符串之间放置一个.
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |