如何在Python中将这些DMS地理索引转换为十进制?

时间:2012-02-07 22:22:51

标签: python

我在这样的文本文件中有很长的网址和地理标记列表

42¬∞21,Ä≤50,Ä≥N,71¬∞06,Ä≤05,Ä≥W 35¬∞29,Ä≤23,Ä≥N,77¬∞58,Ä≤57,Ä≥W

我需要选择地理软件并将度数分秒(此处描述为¬∞,Ä≤,Ä≥)转换为十进制度数。

我找到了一种方法来进行转换,但我需要它们采用'''格式,我不知道如何重新格式化它们。帮助?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西:

>>> coords = "42°21′50″N,71°06′05″W 35°29′23″N,77°58′57″W"
>>> coords.replace('¬∞', '°').replace('Ä≤', "'").replace('Ä≥', '"')
42°21‚'50‚"N,71°06‚'05‚"W 35°29‚'23‚"N,77°58‚'57‚"W

基本上,您可以链接一些str.replace次来执行所需的替换。

无论如何,这可能与某些编码问题有关,因此有必要查看原始数据以找出所使用的编码。

答案 1 :(得分:1)

这是一个字符编码问题。您的文本文件使用UTF-8编码,但您的编辑器认为它是MacOS编码(这一个:请参阅http://en.wikipedia.org/wiki/Mac_OS_Roman)。

如果您在变量中包含上述数据,则可以像这样对其进行解码:

my_coords = raw_data.decode("utf8")
print(my_coords)

这会给你这样的东西: 42°21'50“N,71°06'05”W 35°29'23“N,77°58'57”W

请注意,°'和'分别是unicode U + B0(DEGREE SIGN),U + 2032(PRIME)和U + 2033(DOUBLE PRIME)。

您不是唯一遇到此问题的人。美国总统巴拉克奥巴马本人遇到了这个问题:)

http://www.hanselman.com/blog/WhyTheAskObamaTweetWasGarbledOnScreenKnowYourUTF8UnicodeASCIIAndANSIDecodingMrPresident.aspx