Удалить пробелы в словах, включая амперсанд с помощью регулярных выражений - PullRequest
0 голосов
/ 03 октября 2019

В python3, используя re.sub(pattern, replacement, string), я смог удалить пробелы вокруг амперсанда. Например, следующие фразы следует изменить следующим образом:

" A & D АЛЬТЕРНАТИВНЫЕ РЕШЕНИЯ " на " AD АЛЬТЕРНАТИВНЫЕ РЕШЕНИЯ "

" WESTMOUNT PLUMBING & HEATING"to" WESTMOUNT PLUMBING HEATING"

" ПАНОРАМНЫЙ ВИД B & B"в" ПАНОРАМНЫЙ ВИД BB "

Мне удалось исправить первые два шаблона, но у меня возникли проблемы с третьим, я попробовал следующее:

import re
#str="A & D ALTERNATIVE SOLUTIONS LTD."
#str="WESTMOUNT PLUMBING & HEATING LTD."
str= "A PANORAMIC VIEW B & B"


str = re.sub('(?<=\\&)\s','',str)
str = re.sub('(?<=^[A-Z])\s','',str)
str = re.sub('[^\w\s]','',str)

print(str)

Как я могу получить все шаблоны?

1 Ответ

2 голосов
/ 03 октября 2019

Вы можете сделать следующее:

strlist = ["A & D ALTERNATIVE SOLUTIONS LTD.","WESTMOUNT PLUMBING & HEATING LTD.", "A PANORAMIC VIEW B & B"] 
pattern = r'(\w{2}\s)?\s?& (\w{2})?'

 [re.sub(pattern,r'\1\2',str_) for str_ in strlist]
Out[120]: 
['AD ALTERNATIVE SOLUTIONS LTD.',
 'WESTMOUNT PLUMBING HEATING LTD.',
 'A PANORAMIC VIEW BB']
...