【发布时间】:2021-04-24 17:05:38
【问题描述】:
简介
我正在创建一个带有 Telepot 和 selenium 的爬虫机器人,当我获得需要使用电报机器人发送的文本数据时,它无法读取,因为它包含错误格式的 unicode-escape 字符(表情符号),例如:
"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 和正则表达式获得的变量中
我的尝试
我用了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.loads('"hi I like this emoji: \\u265B\\u2655"')→ '嗨,我喜欢这个表情符号:♛♕'... -
json.loads('"..."')和json.loads("...")之间存在很大差异。如果您在某处有 JSON 值,则该值应包含双引号。如果将该 JSON 值放入 Python 字符串文字中,则这些引号必须包含在 Python 字符串文字中,即:s = '"\\u265B..."'以表示 JSON 值"\u265B..."。 那 应该是完全可 JSON 解码的。目前尚不清楚您到底在处理什么,以及您是否只是因为您将有效的 JSON 值错误地复制到 Python 源代码中进行测试而失败了,或者其他什么…… -
你可能一开始就不想使用正则表达式来提取这个字符串(你能处理转义引号吗?)
标签: python python-3.x unicode python-unicode