正在寻找一种Python速记方法,将url编码的字符串解析为元组

正在寻找一种Python速记方法,将url编码的字符串解析为元组,python,for-loop,tuples,Python,For Loop,Tuples,我有一个字符串rssi=199&phase=-1&doppler=-1,我试图用Python解析它,使其看起来像[('rssi','199'),('phase','-1'),('doppler','-1')] 目前,我有一个工作的功能,做我想要的。事情是这样的: s='rssi=199&phase=-1doppler=-1' spl=s.split('&')#现在看起来像['rssi=199','phase=-1','doppler=-1'] l=[] 对于spl中的i: l、 追加(元组(即拆

我有一个字符串
rssi=199&phase=-1&doppler=-1
,我试图用Python解析它,使其看起来像
[('rssi','199'),('phase','-1'),('doppler','-1')]

目前,我有一个工作的功能,做我想要的。事情是这样的:

s='rssi=199&phase=-1doppler=-1'
spl=s.split('&')#现在看起来像['rssi=199','phase=-1','doppler=-1']
l=[]
对于spl中的i:
l、 追加(元组(即拆分('='))
打印l#最后有[('rssi','199'),('phase','-1'),('doppler','-1')]

我正在寻找一种更短的方法,用更少的线来完成这项任务。只是为了了解如何清理代码并获得最佳实践。我在python中看到过类似于foo.split(“;”)中x的
[x.strip()]操作,如果x.strip()]
在数组中带有for循环。我不完全理解它的作用,也不知道它叫什么。任何方向正确的帮助都将不胜感激

您所询问的结构称为a。您可以将
for
循环替换为:

[v.split('=') for v in s.split('&')]
这将为您提供一个如下列表:

[['rssi', '199'], ['phase', '-1'], ['doppler', '-1']]
但是对于您正在做的事情,
urlparse.parseqs
方法可能更容易:

>>> import urlparse
>>> urlparse.parse_qs('rssi=199&phase=-1&doppler=-1')
{'phase': ['-1'], 'rssi': ['199'], 'doppler': ['-1']}
…或
urlparse.parse_qsl
,如果您确实想要列表/元组而不是dict:

>>> urlparse.parse_qsl('rssi=199&phase=-1&doppler=-1')
[('rssi', '199'), ('phase', '-1'), ('doppler', '-1')]

您所询问的结构称为a。您可以将
for
循环替换为:

[v.split('=') for v in s.split('&')]
这将为您提供一个如下列表:

[['rssi', '199'], ['phase', '-1'], ['doppler', '-1']]
但是对于您正在做的事情,
urlparse.parseqs
方法可能更容易:

>>> import urlparse
>>> urlparse.parse_qs('rssi=199&phase=-1&doppler=-1')
{'phase': ['-1'], 'rssi': ['199'], 'doppler': ['-1']}
…或
urlparse.parse_qsl
,如果您确实想要列表/元组而不是dict:

>>> urlparse.parse_qsl('rssi=199&phase=-1&doppler=-1')
[('rssi', '199'), ('phase', '-1'), ('doppler', '-1')]
您正在寻找:

将其转化为字典也可能有帮助:

>>> dict(urlparse.parse_qsl("foo=bar&bar=baz"))
{'foo': 'bar', 'bar': 'baz'}
您正在寻找:

将其转化为字典也可能有帮助:

>>> dict(urlparse.parse_qsl("foo=bar&bar=baz"))
{'foo': 'bar', 'bar': 'baz'}

我假设您从一个URL开始,在
上拆分并删除了主机和路径,现在正在尝试解析查询字符串。您可能希望从一开始就使用
urlparse

import urlparse

parsed = urlparse.urlparse('http://www.bob.com/index?rssi=199&phase=-1&doppler=-1')
print parsed.hostname + parsed.path 
# www.bob.com/index

query_tuples = urlparse.parse_qsl(parsed.query)
print query_tuples 
# [('rssi', '199'), ('phase', '-1'), ('doppler', '-1')]

我假设您从一个URL开始,在
上拆分并删除了主机和路径,现在正在尝试解析查询字符串。您可能希望从一开始就使用
urlparse

import urlparse

parsed = urlparse.urlparse('http://www.bob.com/index?rssi=199&phase=-1&doppler=-1')
print parsed.hostname + parsed.path 
# www.bob.com/index

query_tuples = urlparse.parse_qsl(parsed.query)
print query_tuples 
# [('rssi', '199'), ('phase', '-1'), ('doppler', '-1')]

这个符号叫列表理解,这个符号叫列表理解,谢谢你给我看列表理解。还要感谢您提供的urlparse库。我以前没有注意到查询字符串部分,并且用错了。感谢您让我了解列表。还要感谢您提供的urlparse库。我没有注意到查询字符串部分,以前用错了。