在re.sub中处理捕获组?
我想取0.71331, 52.25378
这个string0.71331, 52.25378
然后返回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
。 我究竟做错了什么?
您应该使用正则expression式的原始string,请尝试以下操作:
coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)
使用你当前的代码,replacestring中的反斜杠将转义数字,所以你将replace所有匹配的等价于chr(1) + "," + chr(2)
:
>>> '\1,\2' '\x01,\x02' >>> print '\1,\2' , >>> print r'\1,\2' # this is what you actually want \1,\2
任何时候,如果要在string中留下反斜杠,请使用r
前缀,或者转义每个反斜杠( \\1,\\2
)。
Python将\1
解释为ASCII值为1的字符,并将其传递给sub
。
使用原始string,其中Python不解释\
。
coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)
如果你需要更多的信息,这个在re
文档的开头就已经介绍了。