2017-05-17 20 views
-4

pythonでregexを使って以下の形式のlat longを抽出する必要があります。私はこのトピックに新たなんだとpythonを使って緯度と経度を抽出する正規表現

(-17.23465,4.6883)

私はこの上で私を導くためにいくつかのいずれかが必要です。あなたがやりたい

おかげ

+3

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

+0

いいえ、私は言及したようにフォーマットで長いlatを持っています。 –

+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を使用(のpythonを設定フレーバー)。 Pythonの正規表現に関する詳細は、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

関連する問題