我想取字符串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
。我做错了什么?
答案 0 :(得分:83)
您应该使用原始字符串进行正则表达式,请尝试以下操作:
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
)。
答案 1 :(得分:13)
Python将\1
解释为ASCII值为1的字符,并将其传递给sub
。
使用原始字符串,其中Python不解释\
。
coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)
如果您需要更多信息,请在re
documentation的开头详细介绍。