【问题标题】:Convert strings to emoji in python在python中将字符串转换为表情符号
【发布时间】:2017-07-04 13:55:09
【问题描述】:

我有一个推特集合,我想检查其中的表情符号,但看起来集合的编写过程转换了字符串中的所有表情符号,例如'????'是 ':-)' 在文本和 '????'是':D'等等所有表情符号。如果我们尝试检查它们的 unicode 代码点,我们会得到 ':-)'.encode('utf-8') 等于 b':-)' 同时 '????'.encode('utf-8') 等于 'b'\xf0\x9f\x98\x8a 并且相等性检查失败。使用 utf-16':-)'.encode('utf-16') 等于 b'\xff\xfe:\x00-\x00)\x00''????'.encode('utf-16')b'\xff\xfe=\xd8\n\xde' 。那么有什么方法可以将文本表示(例如 ':-)' 转换回表情符号 '????'。

【问题讨论】:

  • 我要做的第一件事是用正则表达式搜索它。

标签: python-3.x unicode encoding utf-8


【解决方案1】:

使用dictionary 将任何文本表情符号转换回表情符号,例如如下:

>>> dict_emo = { ':-)'  : b'\xf0\x9f\x98\x8a',
...              ':)'   : b'\xf0\x9f\x98\x8a',
...              '=)'   : b'\xf0\x9f\x98\x8a',  # Smile or happy
...              ':-D'  : b'\xf0\x9f\x98\x83',
...              ':D'   : b'\xf0\x9f\x98\x83',
...              '=D'   : b'\xf0\x9f\x98\x83',  # Big smile
...              '>:-(' : b'\xF0\x9F\x98\xA0',
...              '>:-o' : b'\xF0\x9F\x98\xA0'   # Angry face
...              }
>>> print( dict_emo[':)'].decode('utf-8'))
?
>>> print( dict_emo['>:-('].decode('utf-8'))
?
>>> print( dict_emo[':-D'].decode('utf-8'))
?
>>>
>>>
>>> dict_emot= { ':-)'  : b'\xf0\x9f\x98\x8a'.decode('utf-8'),
...              ':)'   : b'\xf0\x9f\x98\x8a'.decode('utf-8'),
...              '=)'   : b'\xf0\x9f\x98\x8a'.decode('utf-8'),  # Smile or happy
...              ':-D'  : b'\xf0\x9f\x98\x83'.decode('utf-8'),
...              ':D'   : b'\xf0\x9f\x98\x83'.decode('utf-8'),
...              '=D'   : b'\xf0\x9f\x98\x83'.decode('utf-8'),  # Big smile
...              '>:-(' : b'\xF0\x9F\x98\xA0'.decode('utf-8'),
...              '>:-o' : b'\xF0\x9F\x98\xA0'.decode('utf-8')   # Angry face
...              }
>>> print( dict_emot[':)'] )
?
>>> print( dict_emot['>:-o'] )
?
>>> print( dict_emot['=D'] )
?
>>>

很遗憾,至少还有两个任务:

【讨论】:

    猜你喜欢
    • 2021-10-04
    • 2018-12-15
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2020-10-22
    • 2016-10-22
    相关资源
    最近更新 更多