如何将一串 utf-8 字节转换为 python 中的 unicode 表情符号

How to convert a string of utf-8 bytes into a unicode emoji in python

所以我下载了 Facebook Messenger 消息,它们是包含大量信息的几个 json 文件。这是 json:

的片段
"messages": [
{
  "sender_name": "sample name",
  "timestamp_ms": 1649215459023,
  "content": "sample message",
  "reactions": [
    {
      "reaction": "\u00f0\u009f\u0098\u0086",
      "actor": "actor name"
    }
  ],
  "type": "Generic",
  "is_unsent": false
}

]

我想做的是阅读这个 json 然后用它创建一个数据框,但是由于所有非 ASCII 字符都已替换为 \u00f0\u009f\u0098\u0086 类型的代码,所以它不是例如将其识别为表情符号。

我的问题是,我需要做什么才能真正看到那些表情符号,而不是那些代码?我考虑过使用正则表达式来查找所有这些模式,但我不知道我可以用什么来替换它们。

是的,我在尝试解码 Facebook 消息转储时遇到了同样的问题。这是我解决它的方法:

string = "\u00f0\u009f\u0098\u0086".encode("latin-1").decode("utf-8")
# ''

原因如下:

  1. 此表情符号需要 4 个字节以 UTF-8 编码(F0 9F 98 86,请查看 this page 的底部)
  2. Facebook 可以为 JSON 文件使用 UTF-8,但他们选择了 printable ASCII。所以它将这 4 个字节编码为 \u00F0\u009F\u0098\u0086
  3. encode("latin-1") 是将这些编码转换回原始字节的便捷方式。
  4. decode("utf-8") 将原始字节转换为 Unicode 字符。