正在寻找一种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库。我没有注意到查询字符串部分,以前用错了。