Quiero tomar la cadena 0.71331, 52.25378y regresar 0.71331,52.25378, es decir, solo buscar un dígito, una coma, un espacio y un dígito, y eliminar el espacio.
Este es mi código actual:
coords = '0.71331, 52.25378'
coord_re = re.sub("(\d), (\d)", "\1,\2", coords)
print coord_re
Pero esto me da 0.7133,2.25378. ¿Qué estoy haciendo mal?

re.sub(r'(?<=\d), (?=\d)', ',', coords).coords.replace(' ', '')Respuestas:
Debería utilizar cadenas sin formato para expresiones regulares, intente lo siguiente:
coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)Con su código actual, las barras invertidas en su cadena de reemplazo se escapan de los dígitos, por lo que está reemplazando todas las coincidencias por el equivalente de
chr(1) + "," + chr(2):>>> '\1,\2' '\x01,\x02' >>> print '\1,\2' , >>> print r'\1,\2' # this is what you actually want \1,\2Siempre que desee dejar la barra invertida en la cadena, use el
rprefijo o escape cada barra invertida (\\1,\\2).fuente
\1llamó xCoord , ¿es posible indicarre.subque se reemplacen las subcadenas con nombres de grupo quere.sub(r"(\d), (\d)", r"\1,\2", coords)xCoord,52.25378\1reemplaza con algún extraño carácter Unicode.Python interpreta
\1como un carácter con valor ASCII 1 y se lo pasa asub.Utilice cadenas sin formato, en las que Python no interpreta el
\.coord_re = re.sub(r"(\d), (\d)", r"\1,\2", coords)Esto se cubre desde el principio de la
redocumentación , en caso de que necesite más información.fuente