Обработка групп захвата в re.саб?
Я хочу взять строку 0.71331, 52.25378
и возврат 0.71331,52.25378
- т. е. просто найдите цифру, запятую, пробел и цифру и удалите пробел.
Это мой текущий код:
coords = '0.71331, 52.25378'
coord_re = re.sub("(d), (d)", ",", coords)
print coord_re
но это дает мне 0.7133,2.25378
. Что я делаю не так?
2 ответа:
вы должны использовать необработанные строки для регулярных выражений, попробуйте следующее:
coord_re = re.sub(r"(\d), (\d)", r",", coords)
С вашим текущим кодом обратные косые черты в вашей строке замены экранируют цифры, поэтому вы заменяете все совпадения эквивалентом
chr(1) + "," + chr(2)
:>>> ',' '\x01,\x02' >>> print ',' , >>> print r',' # this is what you actually want ,
каждый раз, когда вы хотите оставить обратную косую черту в строке, используйте
r
префикс, или экранировать каждую обратную косую черту (\1,\2
).
Python интерпретирует
как символ со значением ASCII 1, и передает это в
sub
.используйте необработанные строки, в которых Python не интерпретирует
\
.coord_re = re.sub(r"(\d), (\d)", r",", coords)
это покрывается прямо в начале
re
документация, если вам нужна дополнительная информация.