Вы можете использовать регулярные выражения, но я предлагаю использовать другой способ, а именно:
txt = 'AAAAA likes apples, but BBBBB likes bananas. Their phone numbers are ffffr and ggggh.'
words = txt.split(' ')
found = [i for i in words if len(set(i[:3].lower()))==1]
print(found) # ['AAAAA', 'BBBBB', 'ffffr', 'ggggh.']
Обратите внимание, что теперь found
не совсем соответствует желаемому результату из-за .
в последнем элементе, но мы могли бы легко удалить любую конечную пунктуацию следующим образом:
import string
clear_found = [i.rstrip(string.punctuation) for i in found]
print(clear_found) # ['AAAAA', 'BBBBB', 'ffffr', 'ggggh']
Объяснение моего метода: я получаю 3 первых символа слова, перевожу их все в нижний регистр, затем использую set
, чтобы проверить, есть ли только одна буква (символ). В качестве альтернативы вы можете использовать .upper
метод str
. Не стесняйтесь использовать решение на основе регулярных выражений, если считаете, что оно лучше подходит для вашего варианта использования, но имейте в виду, что для определенных проблем существует возможность решения без регулярных выражений.