Не срабатывает проверка

Подскажите пожалуйста, что я делаю не так?

В тексте нахожу слова начинающиеся с @, требуется проверить: если в конце этого слова стоит знак пунктуации - удалить его, и в итоге записать в список все эти слова с отсечением @.

Мой код:

from string import punctuation
text = '@user1: bla bla bla @user2 @user3.'
for word in text.split(" "):
    for p in punctuation:
        if word.startswith('@') and word.endswith(p):
            users_list.append(word[1:-1])
        if word.startswith('@') and not word.endswith(p):
            print(word)
            users_list.append(word[1:]) 

удаление : и . не происходит


Ответы (1 шт):

Автор решения: Павел

Предложу более простое решение без костылей:

import re
from string import punctuation

text = '@user1: bla bla bla @ab.abd:, @user2 @user3.'

users_list = [re.sub(f'[{re.escape(punctuation)}]+$', '', user_name[1:])
              for user_name in text.split()
              if user_name.startswith('@')]

print(users_list)

Вывод:

['user1', 'ab.abd', 'user2', 'user3']

→ Ссылка