Как создать регулярный словарь смайликов в python?

У меня есть список кодов смайликов внутри файла UTF32.red.codes в виде обычного текста. Простой контент файла

 \U0001F600 \U0001F601 \U0001F602 \U0001F603 \U0001F604 \U0001F605 \U0001F606 \U0001F609 \U0001F60A \U0001F60B 

Основываясь на вопросе , моя идея состоит в том, чтобы создать регулярное выражение из содержимого файла, чтобы поймать смайлики. Это мой минимальный рабочий пример

 import re with open('UTF32.red.codes','r') as emof: codes = [emo.strip() for emo in emof] emojis = re.compile(u"(%s)" % "|".join(codes)) string = u'string to check \U0001F601' found = emojis.findall(string) print found 

found всегда пусто. Где я ошибаюсь? Я использую python 2.7

2 Solutions collect form web for “Как создать регулярный словарь смайликов в python?”

Ваш код будет отлично работать в python 3 (просто исправить print found для print(found) ). Однако в python 2.7 он не будет работать, поскольку его модуль re имеет известную ошибку (см. Эту тему и эту проблему ).

Если вам все еще нужна версия кода python 2, просто используйте модуль regex , который можно установить с помощью pip2 install regex . Импортируйте его с помощью import regex затем замените все re. с regex. (т. е. regex.compile и regex.findall ) и все. Он должен работать.

Этот код работает с python 2.7

 import re with open('UTF32.red.codes','rb') as emof: codes = [emo.decode('unicode-escape').strip() for emo in emof] emojis = re.compile(u"(%s)" % "|".join(map(re.escape,codes))) search = ur'string to check \U0001F601' found = emojis.findall(search) print found 
  • Можно ли создать шаблон регулярного выражения Python для соответствия и замены символов Unicode, отличных от ASCII?
  • Регулярное выражение в Python
  • Pandas - фильтр и регулярное выражение ищут индекс DataFrame
  • анализ слов и оценка из файла python
  • Регулярное выражение Python для чтения CSV-подобных строк
  • python reg ex включить отсутствующие запятые
  • python re.X против автоматического продолжения линии
  • Python re.split () vs nltk word_tokenize и sent_tokenize
  • Регулярное выражение, соответствующее многострочному блоку текста
  • Повторное выражение поиска Python из переменной внутри списка
  • Regex для существования некоторых слов, порядок которых не имеет значения
  • Python - лучший язык программирования в мире.