Регулярные выражения - удалить пробел в результате при замене

мне нужно составлять акронимы из передаваемой фразы с помощью регулярок. У меня получилось вот что:

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)
→ Ссылка