2011-02-25 24 views
4

座標我有一個緯度和經度而來在這樣的字符串:蟒蛇 - 摘自一個變量字符串

my_string ='(31.251, -98.877)' 

我想使用Python從上面的字符串中提取的座標。

問題是,有時字符串有可變長度,所以一次可能看起來像這樣(31.25134, -98.877)(31.25134, -98.877435)

所以如果我像my_string[9:15]那樣提取最後一個數字(經度),如果第一個數字(緯度)更長,我也會捕獲''',那就不好了。

任何想法如何我能夠從該字符串中正確提取這些座標? 謝謝!

回答

6

如何:

mystr = '(31.251, -98.877)' 

lat, lng = map(float, mystr.strip('()').split(',')) 

如果不考慮值的長度工作。

+1

+1顯示每個Python程序員應該學習的使用基本構建塊(地圖,浮點,分離,分割)的解決方案。獎勵:如果括號丟失,則不會失敗。 –

+1

@John:Python元組只需要parens進行消歧;它們不是語法所必需的。 –

11
>>> ast.literal_eval('(31.251, -98.877)') 
(31.251, -98.877) 
+0

這是比我更好的答案 - 我以前沒見過'ast.literal_eval'。 –

+3

+1,以利用數據已經以Python可以解析的格式。我想這會比其他一些解決方案慢,但很難打敗它的優雅... – kindall

2
(x, y) = (float(x) for x in my_string[1:-1].split(","))