简介
我正在创建一个带有telepot和selenium的scraper机器人程序,当我获得需要使用telepot机器人程序发送的文本数据时,它是不可读的,因为它包含错误格式的unicode-escape字符(表情符号),如:
"hi I like this emoji: \u265B\u2655"
输出
"hi I like this emoji: u265Bu2655"
所需输出
"hi I like this emoji: ♕♛"
在我的情况下,我不能使用u"hi I like this emoji: u265Bu2655"
,因为我的字符串存储在用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 ) 😍 🎓