Можно сделать то, что вы просите, используя регулярные выражения , через библиотеку re
в python. Вы можете рассматривать регулярные выражения как своего рода расширенную функцию поиска и замены.
Пользователь @ Abijit предоставляет регулярное выражение, которое выполнит соответствующую задачу в этом ответе .
... Следующее регулярное выражение содержит только полосы URL (не только http), любые знаки препинания, имена пользователей или любые не алфавитно-цифровые символы. Он также отделяет слово одним пробелом ...
Вот что я предлагаю.
' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",x).split())
Тестирование этого на ваших образцах строк, похоже, работает и в вашем случае. Вот мой код.
import re # Python regex library
original: str = input()
# This following line uses @Abijit's regex
cleaned: str = ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",original).split())
print(cleaned)
Вывод для каждого следующий:
KFC must be out chicken This guy it s losing his shit
Aye babe Why is Pizza hut calling you at 10 PM
The team will be in tomorrow from 2 30 5 30pm Providing HIV STI tests amp free condoms along with information amp advice on PrEP contraception amp other sexualhealth issues