如何从Python中的URL中提取坐标(lat,lan)?

时间:2016-01-27 12:21:59

标签: regex python-2.7 coordinates

我对如何从Python中的URL提取坐标(Lat,Long)感到有点迷失。

总是我会收到这样的网址:

https://www.testweb.com/cordi?ll=41.403781,2.1896&z=17&pll=41.403781,2.1896

我需要提取这个URL的第二组(在这种情况下:41.403781,2.1896)只是说,并不总是第一组和第二组coords将是相同的。

我知道,这可以通过一些正则表达式完成,但我对它不够好。

2 个答案:

答案 0 :(得分:1)

以下是如何使用正则表达式执行此操作:

import re
m = re.search(r'pll=(\d+\.\d+),(\d+\.\d+)', 'https://www.testweb.com/cordi?ll=41.403781,2.1896&z=17&pll=41.403781,2.1896')
print m.groups()

结果:('41.403781', '2.1896')

您可能需要查看模块urlparse以获得更强大的解决方案。

答案 1 :(得分:1)

urlparse有一个函数“urlparse”和“parse_qs”可靠地访问这些数据,如下所示

$ python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> u="""https://www.testweb.com/cordi?ll=41.403781,2.1896&z=17&pll=41.403781,2.1896"""
>>> import urlparse
>>> x=urlparse.urlparse(u)
>>> x
ParseResult(scheme='https', netloc='www.testweb.com', path='/cordi', params='', query='ll=41.403781,2.1896&z=17&pll=41.403781,2.1896', fragment='')
>>> x.query
'll=41.403781,2.1896&z=17&pll=41.403781,2.1896'
>>> urlparse.parse_qs(x.query)
{'ll': ['41.403781,2.1896'], 'z': ['17'], 'pll': ['41.403781,2.1896']}
>>>