Python字符串字节到字节

Python字符串字节到字节,python,string,unicode,Python,String,Unicode,我有一些字符串数据,看起来像Python中JSON的字节代表 >>> data = """b'{"a": 1, "b": 2}\n'""" 在这里面,我们有一个有效的JSON,看起来像是字节编码的。我想解码字节并加载内部的JSON,但因为它是一个字符串,所以我不能 >>> data.decode() # nope AttributeError: 'str' o

我有一些字符串数据,看起来像Python中JSON的字节代表

>>> 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目标。在你的文法> /COD>尝试中,你必须做的奇怪的切片几乎可以肯定是因为你试图在写一个字符串文本时写的代码错误<数据>代码>你在你的字节文字中间有一个实际的换行符,这是字节文字的无效语法。您可能是想让它成为一个实际的反斜杠和n-that,或者换行符应该在字节文本之外。
    data=r““b'{“a”:1,“b”:2}\n”“”
    可能更能代表您正在使用的实际类型的值。如果不是,那将是一个问题。在我最疯狂的梦想中,我从来没有想象过一个正则表达式解决方案哇,哇,我能说什么,当你每天工作的大部分时间都在写正则表达式时,一切开始看起来像一个正则表达式问题@NolanConaway,现在你有两个问题。(这是一句名言,查一查)