У меня есть датафрейм pandas, содержащий адреса.Некоторые отформатированы правильно, как 481 Rogers Rd York ON
.У других между пробелом города и названием города отсутствует пробел, например: 101 9 Ave SWCalgary AB
или даже возможно: 101 9 Ave SCalgary AB
, где SW
относится к юго-западу и S
к югу.
Я пытаюсь найти регулярное выражение, которое добавит пробел между второй и третьей заглавными буквами, если за ними следуют строчные буквы, или если за ними стоят только две заглавные буквы, за которыми следует строчная, добавьте пробел междупервый и второй.
До сих пор я обнаружил, что ([A-Z]{2,3}[a-z])
будет правильно соответствовать ситуации, но я не могу понять, как оглянуться назад и перейти в положение 2 или 3. В идеале,Я хотел бы использовать индекс для разделения совпадений на [-2:]
, но я не могу понять, как это сделать.
Я обнаружил, что re.findall('(?<=[A-Z][A-Z])[A-Z][a-z].+', '101 9 Ave SWCalgary AB')
вернет последнюю часть строки, и яМожно использовать регулярное выражение с нетерпением, чтобы найти начало и затем присоединиться к ним, но это кажется очень неэффективным.
Спасибо