我想使用字符串0.71331, 52.25378并返回0.71331,52.25378-即只查找一个数字,一个逗号,一个空格和一个数字,然后去掉空格。

这是我当前的代码:

coords = '0.71331, 52.25378'
coord_re = re.sub("(\d), (\d)", "\1,\2", coords)
print coord_re

但这给了我0.7133,2.25378。我究竟做错了什么?

最佳答案

您应该对正则表达式使用原始字符串,请尝试以下操作:

coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)

使用当前代码,替换字符串中的反斜杠使数字转义,因此您要替换所有与chr(1) + "," + chr(2)等效的匹配项:
>>> '\1,\2'
'\x01,\x02'
>>> print '\1,\2'
,
>>> print r'\1,\2'   # this is what you actually want
\1,\2

任何时候要在字符串中保留反斜杠,请使用r前缀,或转义每个反斜杠(\\1,\\2)。

08-03 18:45