Как удалить эмодзи из строки на python?
Парсю объявление с домклика и попалось вот такое описание с эмодзи
text ="⚡️Квартира укомплектована... Отличный собственник ?...?Опиcание квартиры...?Условия сдачи...?Звоните и..."
Я использовал следующий алгоритм, который увидел на stackoverflow
import re
def deEmojify(text):
regrex_pattern = re.compile(pattern = "["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
"]+", flags = re.UNICODE)
return regrex_pattern.sub(r'',text)
После отработки функции остаются вот эти эмодзи ⚡️
Вопрос, как избавиться от этого эмодзи ⚡️ и других, которые могут встретиться?
P.S. Еще не полностью разобрался в этой функции, что за 9-изначные коды и где их смотреть
Ответы (1 шт):
Вопрос решил, благодаря Герману Борисову за предоставленную информацию о Unicode! Ознакомившись с таблицей юникода, переписал функцию
def deEmojify(text):
regrex_pattern = re.compile(pattern = "["
u"\U00000000-\U00000009"
u"\U0000000B-\U0000001F"
u"\U00000080-\U00000400"
u"\U00000402-\U0000040F"
u"\U00000450-\U00000450"
u"\U00000452-\U0010FFFF"
"]+", flags = re.UNICODE)
return regrex_pattern.sub(r'',text)
В \U00000000-\U0000009 удаляются все знаки табуляции и т.д., кроме \n, потому что он мне нужен и его юникод 0000000A
Затем \U0000000B-\U0000001F продолжаю дальше удалять все табуляции и прочее вещи. После 001F идет американская раскладка клавиатуры + спец символы + числа. Мне это нужно, я решил оставить.
Тут \U00000080-\U00000400 я продолжаю удалять ненужные символы, которые могут встретиться. А после 00400 идет русская заглавная буква Ё. Мы русские порой забываем о ней и это нормально, но малая часть населения усердно ее пишут. Поэтому она нам нужна
Затем \U00000402-\U0000040F продолжаем удалять ненужные буквы из кириллицы.
Тут \U00000450-\U00000450 удаляем принудительно символ перед маленькой буквой ё. Ничего умнее не придумал, поэтому решил написать так.
И как кончилась русская раскладка \U00000452-\U0010FFFF удаляю все остальные символы. Результат прекрасный
print(deEmojify('⚡️Квартира укомплектована... Отличный собственник ?\n...?Опиcание квартиры...?Условия сдачи...?Звоните и...'))
print(deEmojify('qwertyuiop[]'))
print(deEmojify('QWERTYUIOP{}|'))
print(deEmojify('asdfghjkl;\''))
print(deEmojify('ASDFGHJKL:"'))
print(deEmojify('zxcvbnm,./'))
print(deEmojify('ZXCVBNM<>?'))
print(deEmojify('Ёё1234567890'))
print(deEmojify('!@#$%^&*()-=+'))
print(deEmojify('!"№;%:?*()_+=\\/'))
print(deEmojify('йцукенгшщзхъ'))
print(deEmojify('ЙЦУКЕНГШЩЗХЪ'))
print(deEmojify('фывапролджэ'))
print(deEmojify('ФЫВАПРОЛДЖЭ'))
print(deEmojify('ячсмитьбю.'))
print(deEmojify('ЯЧСМИТЬБЮ,'))
Результат
Квартира укомплектована... Отличный собственник
...Опиcание квартиры...Условия сдачи...Звоните и...
qwertyuiop[]
QWERTYUIOP{}|
asdfghjkl;'
ASDFGHJKL:"
zxcvbnm,./
ZXCVBNM<>?
Ёё1234567890
!@#$%^&*()-=+
!";%:?*()_+=\/
йцукенгшщзхъ
ЙЦУКЕНГШЩЗХЪ
фывапролджэ
ФЫВАПРОЛДЖЭ
ячсмитьбю.
ЯЧСМИТЬБЮ,