使unicode成为一个存储在变量中的字符串,然后用telepot发送

make unicode a string stored in a variable and then send it with 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)

问题

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

编辑

我试过 yhis:

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 )