1

我有一个程序可以创建 XYZ 文件的输出,但是由于某种原因,输出的文件是 YXZ,我需要切换 x 和 y 列。此外,x 和 y 值在末尾有半球标记。例子:

00.000000W  000.000000S 0.000

我需要删除这些半球标记并将这些值乘以 -1 以使它们成为真正的十进制度格式,以便我可以将它们读入我的下一个程序。任何以“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 回答