【问题标题】:How can "plaintext" Java source codepoints be programmatically converted to Emoji in Python3?如何在 Python3 中以编程方式将“纯文本”Java 源代码点转换为 Emoji?
【发布时间】:2018-07-31 01:47:23
【问题描述】:

我编写了一个 Python3 脚本来从文本文件中提取表情符号字符的 C/C++/Java 源代码点/代理对字符串(例如,\ud83d\ude00 用于????)。

我在这个脚本中还有一本字典,将表情符号映射到他们的描述(“????”=>“笑脸”)。如何将代理对(\ud83d\ude00,字符串文字)转换为对应的表情符号,以便将它们用作访问字典中相应表情符号描述的键?

对于一些附加信息,我提取字符串的方式是,当我运行print(extracted_string) 时,控制台输出为\ud83d\ude00。当我尝试将表情符号键上的值分配给变量时,我得到一个错误:

description = dictionary[extracted_string]
KeyError: '\\ud83d\\ude00'

【问题讨论】:

    标签: java python-3.x unicode emoji


    【解决方案1】:

    这也和 JSON 的编码一样。

    >>> import json
    >>> json.loads('"\\ud83d\\ude00"')
    '?'
    

    【讨论】:

    • 对于寻找这个答案的其他人 - 字符串 必须 的格式如上,在代理对的字符串文字周围加上引号,所以如果变量 emoji 是分配字符串文字值\ud83d\ude00,则需要设置`emoji = '"' + emoji + '"'。谢谢你的回答,乔希!
    【解决方案2】:

    花了一些挖掘和一大堆编码/解码,但我发现了一些可行的方法:

    extracted_string = '\\ud83d\\ude00' #String literal as read from file
    emoji = extracted_string.encode().decode('unicode-escape').encode('utf-16', 'surrogatepass').decode('utf-16')
    print(emoji)
    

    输出:

    ?

    这里的@falestru的回答略有修改:https://stackoverflow.com/a/26311382/1082235

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2020-05-27
      相关资源
      最近更新 更多