将字符串转换为Python字典或JSON对象

2024-04-24 15:43:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这里有一个问题-我有一个以下格式的字符串(注意:没有换行符)。我只希望这个字符串在python字典或json对象中序列化,以便轻松导航。我两个都试过了评估但最终结果要么是一个错误,要么只是另一个字符串。有时我一直在为这个问题绞尽脑汁,我知道有一个简单而优雅的解决方案,而不仅仅是编写自己的解析器。你知道吗

{
  table_name:

   {
     "columns":

   [
     {

        "col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},
        "col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},
        "col_3":"value_3","col_4":"value_4","col_5":"value_5"}],

     "Rows":1,"Total":1,"Flag":1,"Instruction":none

    }
}

Tags: columns对象字符串namejson解析器字典序列化
1条回答
网友
1楼 · 发布于 2024-04-24 15:43:04

请注意,JSON解码器希望每个属性名都用双引号括起来。
re.sub()json.loads()函数使用以下方法:

import json, re

s = '{table_name:{"columns":[{"col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},"col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},"col_3":"value_3","col_4":"value_4","col_5":"value_5"}],"Rows":1,"Total":1,"Flag":1,"Instruction":none}}'
s = re.sub(r'\b(?<!\")([_\w]+)(?=\:)', r'"\1"', s).replace('none', '"None"')
obj = json.loads(s)

print(obj)

输出:

{'table_name': {'columns': [{'col_5': 'value_5', 'col_2': {'col_2_1': 'value_2_1', 'col_2_2': 'value_2_2'}, 'col_3': 'value_3', 'col_1': {'col_1_2': 'value_1_2', 'col_1_1': 'value_1_1'}, 'col_4': 'value_4'}], 'Flag': 1, 'Total': 1, 'Instruction': 'None', 'Rows': 1}}

相关问题 更多 >