Обработка групп захвата в 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документация, если вам нужна дополнительная информация.