如何在python中将负经度转换为正数?

时间:2016-06-20 13:45:44

标签: python python-2.7

我正在阅读文本文件并提取值以显示经度,但是从文本文件中,它是一个负值,需要它为正。

我所拥有的文本文件样本,格式为(DDDMMSS.SS),名为coordinates.txt:

Longitude : -0780417.04

基本上,它需要359添加到前3个数字(DDD或度数),59到下两个数字(MM或分钟)和60.00到最后4个数字(SS.SS或秒)。

注意:每个数字分割都是负值

所需的输出是:

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

我如何将这些添加内容添加到当前代码中?

2 个答案:

答案 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:])

然后对零件进行数学计算,然后根据自己的需要重新组装。

答案 1 :(得分: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)