2016-06-20 46 views
0

私はテキストファイルを読み込んで緯度を表示する値を抽出していますが、テキストファイルからは負の値であり、それが正である必要があります。Pythonで負の経度を正の値に変換するにはどうすればよいですか?

(DDDMMSS.SS)、名前のcoordinates.txtの形式で、私が持っているテキストファイルのサンプル、:基本的に、それは359が最初の3つの数字に追加必要

Longitude : -0780417.04 

(DDDまたは次の2つの数値(MMまたは分)と60から最後の4つの数値(SS.SSまたは秒)に59を加えます。

:数字の各分割が負の値

ある所望の出力は次のようになります。

281 55 43.0 

私が現在持っているコードは次のとおりです。

with open('coordinates.txt', 'r'): as f: 
    for line in f: 
     header = line.split(':')[0] 
     if 'Longitude' in header: 
      longitude = line.split(':')[1].strip()[1:4] + " " + line.split(':')[1].strip()[4:6] + " " + line.split(':')[1].strip()[6:10] 
      print longitude 

どのように私は希望それらの追加を現在のコードに追加してみましょうか?

+0

また、ファイルから読み込んだものは常にstring型であることを忘れないでください。あなたの操作を行う前に、用語を浮動()またはint()しなければなりません。 –

答えて

0
x = line.split(':')[1].strip() 
first = int(x[1:4]) + 359 
second = int(x[4:6]) + 59 
third = float(x[6:10]) + 60.0 
print(first, second, third) 
+0

ありがとうございます:) –

1

まず、値を変数にプルします。文字列として残してください。

key,value = line.split(':') 

次に、チェックを行ってください。私はあなたが正の経度をどのように扱うかを知らない。私はあなたがそれらを無視と仮定しています:

if key == 'Longitude' and value.strip().startswith('-'): 

次に、変数に文字列を分解:

neglong = value.strip()[1:] 
    ddd = int(neglong[0:3]) 
    mm = int(neglong[3:5]) 
    ss_ss = float(neglong[5:]) 

はその後部分にあなたの計算を行うと、再組み立てしかし、あなたが好き。

関連する問題