Регулярные выражения - удалить пробел в результате при замене
мне нужно составлять акронимы из передаваемой фразы с помощью регулярок. У меня получилось вот что:
some_words = 'Near Field Communication'
some_words_upper = some_words.upper()
re.sub(r'\b([А-ЯA-Z]{1})([А-ЯA-Z]+)\b', r'\1', some_words_upper)
Но я не понимаю, как убрать пробел между буквами. На выходе получается: 'N F C', а нужно как в обычной аббревиатуре: 'NFC'. Я пробовала в группе замены добавлять'\^s', но получаю ошибку. Подскажите, пожалуйста
Ответы (2 шт):
Автор решения: Эникейщик
→ Ссылка
Просто заменить пробел на пустую строку не подходит?
re.sub(r'\b([А-ЯA-Z]{1})([А-ЯA-Z]+)\b', r'\1', some_words_upper).replace(" ", "")
Или же так
re.sub(r'\b([А-ЯA-Z]{1})([А-ЯA-Z]+ +)\b', r'\1', some_words_upper)
# ^ 0 или несколько пробелов
Автор решения: Andy Pavlov
→ Ссылка
Не уверен, что нужна замена в этом случае. Можно найти все первые буквы строки через re.findall() и их соединить потом через join().
import re
some_words = 'Near Field Communication'
some_words_upper = some_words.upper()
uppers = re.findall(r'\b([A-ZА-Я])\w+\b', some_words_upper)
print(''.join(uppers)) # NFC
Либо, если все-таки хочется через удаление, то можно поступить таким образом.
uppers = re.sub(r'\s*\b([A-ZА-Я])\w+\b\s*', r'\1', some_words_upper)
print(uppers)