2017-03-09 44 views

回答

0

首先,請注意,您必須轉義報價(簡單或雙)。

然後使用非數字re.split(),並將其包裝在一個列表理解刪除空字符串re.split可以在接收端生成,並轉換爲整數

>>> import re 
>>> z = '- (S) 19º 52\' 11,528", 19° 52\' 11,528"' 
>>> [int(x) for x in re.split("\D+",z) if x] 
[19, 52, 11, 528, 19, 52, 11, 528] 

注意,它的確定爲您的使用情況,但對於負數不能正常工作(-符號將被除去)

要正確處理浮點數,這有點複雜,但仍然可以完成,只要您沒有負數:

>>> [float(x.replace(",",".")) for x in re.split("[^\d,]+",z) if x and x!=","] 
[19.0, 52.0, 11.528, 19.0, 52.0, 11.528] 
+0

好評,但這樣的長/拉格式是固定的IIRC,所以你總是得到相同數量的領域無關緊要。 。總是可以從分割中排除'','''。但是這使我們以「int或float from string」爲理由。然而,編輯完整性。 –

+0

非常感謝! – Wesley