2012-04-30 9 views
1

何らかの理由で出力ファイルがYXZである、xとyの列が必要です切り替えられる。さらに、xとyの値は最後に半球のマーキングがあります。例:Pythonを使用してタブ区切りのテキストファイルを別のプログラムで使用可能なフォーマットに再フォーマットする

00.000000W 000.000000S 0.000 

私はそう、私は私の次のプログラムにそれらを読むことができ、それらの真小数度フォーマットにするために-1することにより、これらの半球マーキングと複数の値を削除する必要があります。最後に「S」または「W」が付いている値は-1を乗じる必要があります。最後に「N」または「E」の値を削除するだけです。これができれば、無限の時間を節約できます。私はこの作業をExcelで行うことができますが、ときには私のファイルが大規模で作業に威力を発揮します。私が得ることができるどんな助けも素晴らしいと思います。

これは私がこれまでに持っているもので、XとYの値を切り替えるために働いていますが、 "S"または "W"で終わる値を-1で削除して掛けます。

infile="my.txt" 
outfile="my_edited.txt" 

read_infile=open(infile,'r') 
write_outfile=open(outfile,'w') 

reader=csv.reader(read_infile, delimiter='\t') 
writer=csv.writer(writting, delimiter='\t') 

for row in reader: 
    writer.writerow([row[1], row[0], row[2]]) 
+0

クイックハック: を '行のリーダーで: NEW_ROW = [] new_row.append(フロート(行[1] [ - 1] * [-1 (行[0] [: - 1] * [-1,1] [行[0] [ - 1]]) "new") new_row.append(float(row [2]) writer.writerow(new_row) 誰かがあなたにもっと合理的な答えを書いてくれることを願っています。 – David

答えて

0

この回答は、文字列として、すべてを保持し、文字列の先頭に"-1"を追加すると、それは負作るのに十分なされていることを前提としています。 ''.join(["Hello, ", "World!"])は実際には文字列を連結するPythonの方法であり、-1は文字列の最後の文字:[1,2,3][-1] == 3を取得することに注意してください。

infile="my.txt" 
outfile="my_edited.txt" 

read_infile=open(infile,'r') 
write_outfile=open(outfile,'w') 

reader=csv.reader(read_infile, delimiter='\t') 
writer=csv.writer(write_outfile, delimiter='\t') 

for row in reader: 
    lng = row[0][:-1] 
    lat = row[1][:-1] 

    if row[0][-1] == 'W': 
     lng = ''.join(["-1", lng]) 

    if row[1][-1] == 'S': 
     lat = ''.join(["-1", lat]) 

    writer.writerow([lat, lng, row[2]]) 
機能するが、悪いと神託ない
関連する問題