Фильтровать смайлики типа \ xe2 \ x80 \ x9e из HTML в python 3

#python #html #unicode #emoji

#python #HTML #юникод #смайлики

Вопрос:

Итак, я работаю над проектом, в котором мне нужно вручную фильтровать HTML-страницы комментариев в социальных сетях с помощью split и replace и re.sub и тому подобное, иначе я бы не получил требуемую информацию (BeautifulSoup также отфильтровывает важную информацию). В итоге у меня осталось что-то вроде этого:

Удачи вам теперь, когда есть реальная конкуренция xf0 x9f x98 x8f

Спасибо xf0 x9f x98 x82

Я искал любой способ избавиться от них или заменить их настоящими смайликами, но ничего не нашел. Я нашел команды, которые отфильтровывают смайлики, когда они выглядят так U 1F600 или вот так: cowboy hat face: или вот так U0001F606, и я нашел кого-то, кто фильтровал такие вещи, как xe2 x80 x99, но он делал это только для точек с запятой и кавычек, а не для смайликов. Я также не смог найти способ использовать encode и decode для этого.

Короче говоря: я хочу, чтобы «Спасибо xf0 x9f x98 x82» стало «Спасибо».

Итак, я новичок в работе с веб-сайтами, и, возможно, ответ довольно прост, но, как я уже сказал, я ничего не нашел по этому вопросу в Интернете. Любая помощь очень ценится!

Ответ №1:

если вам нужны только символы ascii в вашем тексте, вы можете кодировать и декодировать текст с помощью ascii

 text = """Best of luck to you now that there's some real competition xf0x9fx98x8f
Thanks xf0x9fx98x82"""

text = text.encode('ascii', 'ignore').decode()

>>> text

Best of luck to you now that there's some real competition 
Thanks
  

Комментарии:

1. Во-первых, большое спасибо, это мне помогло. Однако, хотя он работает в оболочке с точно такими же строками, он не работает в моей программе. Поскольку я не хочу делиться с вами всеми 200 строками худшего кода, который только можно себе представить, полными подавленных немецких комментариев, мне придется разобраться с остальным самостоятельно.