2011-03-13 81 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