2017-05-17 1 views
-4

python에서 regex를 사용하여 아래의 형식으로 lat long을 추출해야합니다. 나는이 주제에 새로 온 사람으로Python을 사용하여 위도와 경도를 추출하는 정규 표현식

(-17.23465,4.6883)

나는이 날을 안내하는 몇 가지 중 하나가 필요합니다. 당신이 원하는 것을 할 수

감사

+3

' lat, long = (-17.23465,4.6883)'? –

+0

아니요, 내가 언급 한 형식의 long을 가지고 있습니다. –

+1

... 그 형식은 튜플입니다. 그렇지 않은 한, 그것은 문자열이되어야합니다. – ryugie

답변

1

간단한 정규 표현식 \(([^,]*),([^\)]*)\)입니다.

가장 명확한 정규식 솔루션입니다 :

> import re 
> match = re.match('^\((?P<lat>-?\d*(.\d+)),(?P<long>-?\d*(.\d+))\)$', 
        '(-17,23465,4.6883)') 
> float(match.group('lat')) 
-17.23465 
> float(match.group('long')) 
4.6883 

단지 문자열 연산을 사용하는 가장 간단한 해결 방법은 다음과 같습니다

> latlong = '(-17,23465,4.6883)' 
> lat, long = [float(x) for x in latlong[1:-1].split(',')] 

는, 실제로 정규 표현식에 대한 자세한 내용은 Online regex tester이 (파이썬을 설정 사용 맛). 파이썬의 정규 표현식에 대해 더 많이 배우려면 Regular Expression HOWTO을 읽으십시오.

0

별도로 위도와 경도를 원하는 가정, 당신이 제공하는 값이 문자열, 당신은 할 수 :

val = '(-17.23465,4.6883)' 
val = val.replace('(', '').replace(')', '').split(',') 

lat = val[0] 
lon = val[1] 

출력 : 같은 잘못은 무엇

lat: -17.23465

lon: 4.6883

+0

'val'을 문자열로 사용 했습니까? 이 코드는 'AttributeError'를 발생시키기 때문에 : AttributeError :'tuple '객체는'replace'' 속성이 없습니다. –

+0

@ChristianDean 예, 훌륭합니다. 나는 나의 대답을 업데이트했다. 그 점을 지적 해 주셔서 감사합니다! – jape

관련 문제