2017-01-25 4 views
-1

私は例の中でうまくいくと思われる緯度を見つける正規表現のEXAMPLE HEREを持っています。これをPythonに渡して、一致する行を出力してから、一致する文字列を返します。Python REGEXはregex101よりも多くの文字列データを返しますPython

line = "position:  0.00ft Northing: 728398.54 ft Latitude:   31  38 40.268 N" 
Lat = re.findall(r"\d{1,3}.*\s\d{1,2}.*\s\d{1,2}.*N",line.translate(None, '\x00')) 
if len(Lat) > 0: 
    print(line) 
    latitude = Lat[0] 
    print(latitude) 
# 728398.54 ft Latitude:   31  38 40.268 N 

私の正規表現はどこで間違っていますか?

私は戻りたい: "31 38 40.268 N"

+0

でグループ2秒で分理由を説明してくださいあなたが見る結果は間違っています。 – DyZ

+0

行は出力の2番目のブロックであり、一致は出力の最初のブロックです。この例では、「31 38 40.268 N」@DYZ –

+0

となるLatitudeの値を探しています。regex101では、レイジードットのパターン「。*?」を使用しています。ここでは、貪欲なドット、 '。*'を表示します。データは、あなたがregex101で共有したものとは違っているようです。 –

答えて

-1

何の代わりに、この正規表現について:Latitude:\s*(\d{1,3})\s*(\d{1,2})\s*(\d{1,2}(?:\.\d+)?)、グループ1に度、グループ3

import re 
line = "position:  0.00ft Northing: 728398.54 ft Latitude:   31  38 40.268 N" 
result = re.search(r"Latitude:\s*(\d{1,3})\s*(\d{1,2})\s*(\d{1,2}(?:\.\d+)?)", line) 
formatted = result.group(1) + " " + result.group(2) + " " + result.group(3) + " N" 
print(formatted) 
+0

これは興味深い解決策ですが、Latitudeという単語はまったく存在しないかもしれませんし、スペルミスがあるかもしれませんのでパターンとマッチするのが優先です。 –

+0

フォーマットを削除するだけです緯度専用です。 –

+0

残念ながら、グループメソッドは私のためには機能しません –

関連する問題