【问题标题】:How to compare emojis in python如何在python中比较表情符号
【发布时间】:2019-03-06 04:42:22
【问题描述】:

我有一组 ics 数据,我试图在 python 中解析。该日期使用 emjois 来表示不同类型的事件。所以我试图在 if 语句中使用这些 emjois 来告诉它是什么类型的事件。我正在尝试这样比较:

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

当事件等于✈️ 时,它的评估结果不正确。我猜它与编码有关,但我无法理解它。任何帮助将不胜感激

【问题讨论】:

  • 我尝试了你的U+2708 代码,但得到了这个错误:selfParse.py:32: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if event == U'2708' 我想我需要以某种方式将event 转换为 unicode?​​span>
  • 用实际的表情符号尝试一下,并将 ' 替换为 "(单引号,带双引号),我也看到一些人在使用这个 from emoji import UNICODE_EMOJI
  • if "✈️" == U"2708": print 'match found' 这样尝试,结果相同。有趣的是,当我去掉表情符号周围的引号时,它会在我的文本编辑器中变成一个较小的平面和一个带框的问号。如果我尝试复制到这里,它只会变回表情符号
  • 我认为这只是一个语法问题。我对 python 表情符号的使用并不十分熟悉。我知道这与语法/导入有关。
  • 查看此链接,看看是否有帮助。本质上,您需要了解如何验证“表情符号”或 unicode。 stackoverflow.com/questions/41604811/…

标签: python python-2.7 unicode emoji


【解决方案1】:

该特定字符表示为两个代码点。在 Python 2 中,您还需要声明源文件的编码以在源中使用非 ASCII 并在事件和要比较的项目中使用 Unicode 字符串:

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

输出:

match

您的事件可能不是 Unicode 字符串。检查type(event)print repr(event) 以查看其实际内容。

您可以获取非 Unicode 字符串进行比较,但它们必须以相同的方式编码。同样,需要print repr(event) 来查看问题所在。理想情况下,将输入文本解码为 Unicode,在代码中处理为 Unicode,编码回字节以将文本写回数据库、文件、网络管道等。

另外,切换到具有更好的 Unicode 处理能力的 Python 3。

【讨论】:

    【解决方案2】:

    尝试先转换为字符串,然后对该字符串进行编码。

    #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.
    

    【讨论】:

    • 我实际上确实导入了表情符号模块,并且像您显示的那样比较并不能解决问题
    • 好的,请稍等。打算自己试一试,看看我能不能让它工作。
    猜你喜欢
    • 2015-12-29
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多