11

我想这应该是比较简单的,但我想不通。我有一个代表坐标的字符串,+27.5916+086.5640我需要在经度和纬度之间加一个逗号,所以我得到+27.5916,+086.5640.

我正在浏览 API,但我似乎找不到任何东西。

哦,我必须使用 Python 2.7.3,因为我编写的程序不支持 Python 3.X。

4

4 回答 4

9

如果您的坐标是c,那么这将起作用。但是请注意,这不适用于负值。你也必须处理负面因素吗?

",+".join(c.rsplit("+", 1))

也用于处理负面因素。

import re
parts = re.split("([\+\-])", c)
parts.insert(3, ',')
print "".join(parts[1:])

输出

+27.5916,+086.5640'

对于底片:

>>> c = "+27.5916-086.5640"
>>> parts = re.split("([\+\-])", c)
>>> parts.insert(3, ',')
>>> "".join(parts[1:])
'+27.5916,-086.5640'
于 2012-12-01T01:14:36.657 回答
4

如果逗号已经存在,此方法将处理逗号。

str = '-27.5916-086.5640'
import re
",".join(re.findall('([\+-]\d+\.\d+)',str))
'-27.5916,-086.5640'
于 2012-12-01T01:23:25.433 回答
3

由于第二个组件似乎是用前导零和固定的小数位数格式化的,这样怎么样:

>>> s='+27.5916+086.5640'
>>> s[0:-9]+','+s[-9:]
'+27.5916,+086.5640'
于 2016-03-02T07:59:51.787 回答
1

听起来像是正则表达式的工作:

Python 2.7.3 (default, Aug 27 2012, 21:19:01) 
[GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.57))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import re
>>> coords = '+27.5916+086.5640'
>>> lat, long = re.findall('[+-]\d+\.\d+', coords)
>>> ','.join((lat, long))
'+27.5916,+086.5640'

进一步阅读:

于 2012-12-01T01:21:16.743 回答