Не срабатывает проверка
Подскажите пожалуйста, что я делаю не так?
В тексте нахожу слова начинающиеся с @, требуется проверить: если в конце этого слова стоит знак пунктуации - удалить его, и в итоге записать в список все эти слова с отсечением @.
Мой код:
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']