2016-12-10 9 views
0

Очень простой вопрос, но я не могу понять это.python regex заменить часть строки

Следующий код:

import re 
addr = '800 W NORTH AVE' 
re.sub(r'([a-zA-Z]+)', 'W North A', addr) 

Это дает мне в результате 800 W North AW North AW Севере вместо 800 W North

Я не понимаю, что я Я делаю неправильно. Поблагодарили бы за любую помощь.

Thanks

+0

Инструмент, содержащийся в 'c: \ python27 \ tools \ scripts \ redemo.py' (сезон для вашей среды), будет визуализировать соответствие регулярных выражений для вас. – thebjorn

+0

Я не уверен, что именно вы действительно пытаетесь сделать, но для вышесказанного вы можете сделать «800 W NORTH AVE'.title()» вместо этого ... – thebjorn

ответ

1

Вы не соответствуете пробельному символу. Это заставляет каждое слово заменить на замену. Вместо этого вам нужно что-то вроде этого:

re.sub(r'(([a-zA-Z]+\?)+)', 'W North A', addr) 

Это соответствует одному или нескольким словам, за которыми следует одно или несколько пробелов.

0

Как пользователь92454 говорит, вы хотите использовать пробельный символ, который равен \s в регулярном выражении Python.

Вы можете использовать шаблон \s([A-Z\s]+), если знаете, что текст, который вы хотите заменить, всегда находится в шапке. Если нет, вы можете использовать \s([A-z\s]+) (нижний регистр «z»).

Смежные вопросы