Ваш шаблон неверен, потому что вы указываете удаление символов \S+
после символов #
. Вместо этого измените ваш шаблон на
>>> re.sub(r'(@|https?)\S+|#', '', text)
' lets take action! fitness health '
Распределение регулярных выражений
(@ # match '@'
| # OR
https? # "http" or "https", followed by...
)
\S+ # one or more characters that aren't whitespace
| # OR
# # hashtag
В качестве бонуса модуль 3 rd party твит-процессор предоставляет большую часть этой функциональности "из коробки" с дополнительными настройками.
import preprocessor as p
p.clean(text)
# 'lets take action!'
# customise what you want removed
p.set_options(p.OPT.MENTION, p.OPT.URL,)
p.clean(text)
# 'lets take action! #fitness #health'
p.clean(text).replace('#', '')
# 'lets take action! fitness health'