使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 )
简介
我正在用 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 )