Как сравнить смайлики в питоне - PullRequest
0 голосов
/ 01 октября 2018

У меня есть набор данных ics, которые я пытаюсь проанализировать в python.Эта дата использует emjois для обозначения различных типов событий.Поэтому я пытаюсь использовать эти emjois в операторе if, чтобы сказать, что это за событие.Я пытаюсь сравнить так:

if event == '✈️':
    do something here

Когда событие равно ✈️, оно не оценивается как истинное.Я предполагаю, что это как-то связано с кодировкой, но я не могу обернуть голову вокруг этого.Любая помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Этот конкретный символ представлен в виде двух кодовых точек.В Python 2 вам также нужно объявить кодировку вашего исходного файла, чтобы использовать не-ASCII в исходном коде и использовать строки Unicode в событии и элементе для сравнения:

#coding:utf8
event = u'\u2708\ufe0f'
if event == u'✈️':
    print 'match'

Вывод:

match

Возможно, ваше событие не является строкой Unicode.Проверьте type(event) и print repr(event), чтобы увидеть его фактическое содержимое.

Можно сравнивать строки, не относящиеся к Юникоду, но они должны кодироваться одинаково.Снова, print repr(event) необходим, чтобы увидеть, в чем проблема.В идеале, декодировать входной текст в Unicode, обрабатывать как Unicode в коде, кодировать обратно в байты, чтобы записать текст обратно в базу данных, файл, сетевой канал и т. Д.

Кроме того, переключитесь на Python 3, который имеет многолучшая обработка Unicode.

0 голосов
/ 01 октября 2018

Попробуйте сначала преобразовать строку, а затем закодировать эту строку.

#convert to unicode
teststring = unicode(teststring, 'utf-8')

#encode it with string escape
teststring = teststring.encode('unicode_escape')

#then run check on test string. 
if event == testString
  do #this code.
...