我有一些看起来像 Python 中 JSON 字节表示的 字符串 数据
>>> data = """b'{"a": 1, "b": 2}\n'"""
在它的内部,我们有一个有效的JSON,看起来像是被字节编码了。我想要对这些字节进行解码,然后loads
内部的JSON,但由于它是一个字符串,所以我不能直接操作。
>>> data.decode() # nope
AttributeError: 'str' object has no attribute 'decode'
对字符串进行编码似乎也没有帮助:
>>> data.encode() # wrong
b'b\'{"a": 1, "b": 2}\n\''
stackoverflow上有很多有关字符串转字节的问题,但是我却找不到任何有关这个特定问题的信息。有人知道如何实现吗?
以下是我不想做和/或行不通的事情:
- 将数据
eval
为字节对象 - 去掉
b
和\n
(我的JSON中有各种其他转义数据)。
这是我找到的唯一有效解决方案,但是有很多缺陷:
from ast import literal_eval
data = """b'{"a": 1, "b": 2}\n'"""
print(literal_eval(data[:-2] + data[-1:]).decode('utf-8'))
ast.literal_eval
。这里可能有一个很好的重复目标。 - user2357112literal_eval
时所做的奇怪切片几乎肯定是由于你在尝试为data
编写字符串文字时引入了一个错误 - 你在字面量中间有一个实际的换行符,这是字节文字的无效语法。你可能想要那个实际的反斜杠和n - 或者换行符应该在字节文字之外。 - user2357112