Как удалить все смайлики из текста?
Как сделать так, чтобы если пользователь ввел данные со смайликом, то этот смайлик не сохранялся в Postgresql, а сохранялся только сам текст.
Вот мой код requests.py
@connection
async def save_description_to_db(session, data, user):
new_user = Application(
category=data['category_problems'],
Description=data['text_problems'],
data=data['data_problems'],
time=data['time_problems'],
conference=data['conference'],
conference_data=data['conference_data'],
conference_time=data['conference_time'],
status=data["status"],
name=user.name,
surname=user.surname,
patronymic=user.patronymic,
department=user.department,
office=user.office,
)
session.add(new_user)
await session.commit()
Ответы (2 шт):
Можно через регулярку почистить текст от лишнего, примерно так:
import re
def remove_emoji(text):
clean_text = " ".join(re.sub(r'[^\w\s.,!?—0-9-]+', '', text).split())
return clean_text
user_text = "Привет! ? Как дела? ? Hey man?, your OK?? "
print(remove_emoji(user_text))
Вывод:
Привет! Как дела? Hey man, your OK?
[Program finished]
Дополнение. Немного погуглив, нашёл библиотеку для работы со смайлами - pip install emoji
import emoji
def remove_emoji(text):
clean_text = emoji.replace_emoji(text, replace="")
return " ".join(clean_text.split())
user_text = "Привет!*% ? Как дела?}¡¿ ? Hey man?, your OK?~@? "
print(remove_emoji(user_text))
Вывод:
Привет!*% Как дела?}¡¿ Hey man, your OK?~@
[Program finished]
Так символы :;‰’″
и тысячи других останутся довольны?
Как уже сказано, можно использовать библиотеку emoji
, а также библиотеку pip install ru-text-cleaner
. История не особо обновляется, но работает неплохо, хотя рассчитана на более глубокую очистку текста. Документация здесь
Код примерно следующий:
from ru_text_cleaner import SimpleCleaner
text_cleaner = SimpleCleaner(
spaces=False,
punctuation=False,
html=False,
lower=False,
stop_words=False,
morpheme=False
)
string = "Привет! ? Как дела? ? Hey man?, your OK?? "
formated_text = text_cleaner.clean_text(string)
На сколько я понимаю, под капотом оно все равно в данном случае будет использовать emoji
.