我想这应该是比较简单的,但我想不通。我有一个代表坐标的字符串,+27.5916+086.5640
我需要在经度和纬度之间加一个逗号,所以我得到+27.5916,+086.5640
.
我正在浏览 API,但我似乎找不到任何东西。
哦,我必须使用 Python 2.7.3,因为我编写的程序不支持 Python 3.X。
如果您的坐标是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'
如果逗号已经存在,此方法将处理逗号。
str = '-27.5916-086.5640'
import re
",".join(re.findall('([\+-]\d+\.\d+)',str))
'-27.5916,-086.5640'
由于第二个组件似乎是用前导零和固定的小数位数格式化的,这样怎么样:
>>> s='+27.5916+086.5640'
>>> s[0:-9]+','+s[-9:]
'+27.5916,+086.5640'
听起来像是正则表达式的工作:
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'