使 unicode 成为存储在变量中的字符串,然后使用 Telepot

问题描述

简介

我正在创建一个带有 Telepot 和 selenium 的刮刀机器人,当我获得需要使用电报机器人发送的文本数据时,它无法读取,因为它包含格式错误的 unicode 转义字符(表情符号),例如:

"hi I like this emoji: \\u265B\\u2655"

输出

"hi I like this emoji: \u265B\u2655"

需要的输出

"hi I like this emoji: ♕♛"

就我而言,我不能使用 u"hi I like this emoji: \u265B\u2655",因为我的字符串存储在使用 selenium 和 regex 获得的变量中

我尝试了什么

我用了 json.loads("hi I like this emoji: \\u265B\\u2655") 我得到了这个

引发异常

raise JSONDecodeError("Expecting value",s,err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

问题

如何格式化这个字符串以获得所需的输出

编辑

我试过了:

json.loads('"' + mystring + '"')

我得到了:

json.decoder.JSONDecodeError: Invalid control character at: line 1 column 23 (char 22)

评论中所问,这是 print(repr(mystring)) 的结果:

'La Spezia\\ud83d\\udccd\\n\\ud83d\\udcdaliceo Scientifico Sportivo A. Pacinotti\\ud83c\\udfeb\\nITALIAN FENCER \\ud83c\\uddee\\ud83c\\uddf9 \\ud83e\\udd3a SPCS!!\\nELECTRIC BASS\\ud83c\\udfb8\\ud83c\\udfb6\\nBooks \\ud83d\\udcd6\\n2a T ( ESCONI ) \\ud83d\\ude0d \\ud83c\\udf93'

解决方法

从您的最终编辑中,抓取的字符串看起来像是直接从某个 JSON 文件中提取的 JSON 编码字符串。 JSON 中的字符串需要双引号才能正确提取:

>>> import json
>>> s='La Spezia\\ud83d\\udccd\\n\\ud83d\\udcdaLiceo Scientifico Sportivo A. Pacinotti\\ud83c\\udfeb\\nITALIAN FENCER \\ud83c\\uddee\\ud83c\\uddf9 \\ud83e\\udd3a SPCS!!\\nELECTRIC BASS\\ud83c\\udfb8\\ud83c\\udfb6\\nBooks \\ud83d\\udcd6\\n2a T ( ESCONI ) \\ud83d\\ude0d \\ud83c\\udf93'
>>> print(json.loads(f'"{s}"'))
La Spezia?
?Liceo Scientifico Sportivo A. Pacinotti?
ITALIAN FENCER ?? ? SPCS!!
ELECTRIC BASS??
Books ?
2a T ( ESCONI ) ? ?