Python字符串字节到字节
我有一些字符串数据,看起来像Python中JSON的字节代表Python字符串字节到字节,python,string,unicode,Python,String,Unicode,我有一些字符串数据,看起来像Python中JSON的字节代表 >>> data = """b'{"a": 1, "b": 2}\n'""" 在这里面,我们有一个有效的JSON,看起来像是字节编码的。我想解码字节并加载内部的JSON,但因为它是一个字符串,所以我不能 >>> data.decode() # nope AttributeError: 'str' o
>>> data = """b'{"a": 1, "b": 2}\n'"""
在这里面,我们有一个有效的JSON,看起来像是字节编码的。我想解码字节并加载内部的
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'))
我知道您说过,由于其他转义数据,您不想删除字符串中的
b
,但我们不能假设生成此内容的内容只输出ascii(因此b
),并且我们可以对其重新编码。所以我想可以使用一个简单的regexp(),然后将其编码为字节
import json
import re
match = re.match(r"\Ab'(.*)'\Z", data, re.DOTALL)
data = json.loads(bytes(match[1], 'ascii'))
这样行吗?我不确定它与
literal\u eval
解决方案相比如何。“我的字符串数据看起来像Python中JSON的字节代表”-这听起来像是一个应该在生成端修复的错误。我希望我能在那端解决它!这些实际上是我必须分析的气流日志和结构日志,ast.literal\u eval
。在这里的某个地方可能有一个很好的DUPE目标。在你的data=r““b'{“a”:1,“b”:2}\n”“”
可能更能代表您正在使用的实际类型的值。如果不是,那将是一个问题。在我最疯狂的梦想中,我从来没有想象过一个正则表达式解决方案哇,哇,我能说什么,当你每天工作的大部分时间都在写正则表达式时,一切开始看起来像一个正则表达式问题@NolanConaway,现在你有两个问题。(这是一句名言,查一查)