1

XYZファイルの出力を作成するプログラムがありますが、何らかの理由で出力されるファイルがYXZであるため、x列とy列を切り替える必要があります。さらに、x値とy値には、最後に半球のマーキングがあります。例:

00.000000W  000.000000S 0.000

これらの半球のマーキングを削除し、値を-1倍して、真の10進角形式にして、次のプログラムに読み込むことができるようにする必要があります。末尾に「S」または「W」が付いている値には-1を掛ける必要があり、末尾に「N」または「E」が付いている値は簡単に削除できます。これができれば、数え切れないほどの時間を節約できます。この操作はExcelで実行できますが、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]])
4

1 に答える 1

0

"-1"この答えはすべてを文字列として保持し、文字列の先頭に追加するだけで負になると想定しています。これ''.join(["Hello, ", "World!"])は、実際には文字列を連結する Pythonic の方法であり-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]])
于 2013-03-29T07:32:49.273 に答える