2011-03-13 39 views
0

给出一个GPS点以下字符串表示...拆分一个GPS点到经纬度定期

(40.714353, -74.005973) 

我怎么能执行一个字符串分割同时获得纬度和经度作为单独的记号 - 无任何使用Python的多余字符(空格和括号)?

回答

6

你不需要正则表达式:

>>> str = "(40.714353, -74.005973)" 
>>> tuple(float(x) for x in str.strip('()').split(',')) 
(40.714353, -74.005973) 

如果你想有一个字符串代替数字,用x.strip()代替float(x)


一个正则表达式的解决办法是:

>>> import re 
>>> m = re.match(r"^\(([-\d.]+), ([-\d.]+)\)$", str) 
>>> m.group(1) 
'40.714353' 
>>> m.group(2) 
'-74.005973' 

这使用capture groups来提取信息。

另请参阅re documentation

+0

完美的作品!正则表达式的答案表示赞赏。我可以使用非正则表达式的解决方案,但我更感兴趣的是学习如何在这种情况下应用正则表达式。 – mmccomb 2011-03-13 16:56:32

7

您可以使用ast.literal_eval()解析字符串:

>>> import ast 
>>> coord = "(40.714353, -74.005973)" 
>>> ast.literal_eval(coord) 
(40.714353000000003, -74.005972999999997) 
+1

' lat,long = ast.literal_eval(coord)'是完全足够的。 – 2011-03-13 16:16:13

+0

这就是我的意思。我不知道为什么我粘贴这个过于复杂的代码片段。 ;) – 2011-03-13 16:19:28

+0

也许我的代码让你分心;) – 2011-03-13 16:20:41