Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python需要将花括号替换为(花括号和逗号)_Python_Json_Shell_Boto3 - Fatal编程技术网

Python需要将花括号替换为(花括号和逗号)

Python需要将花括号替换为(花括号和逗号),python,json,shell,boto3,Python,Json,Shell,Boto3,我有一个包含数十万行的JSON响应,所有的解析都来自python字典,并使用JSON.load转换为JSON 现在获取带有无效响应的JSON响应,因此解决方法如下 响应 { "ComplianceType": "", "Details": { "InstalledTime": "", "PatchBaselineId": "", "PatchState": "" }, "ExecutionSummary": {

我有一个包含数十万行的JSON响应,所有的解析都来自python字典,并使用JSON.load转换为JSON

现在获取带有无效响应的JSON响应,因此解决方法如下

响应

{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
}
{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
}

设法使其有效

[{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
},
{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
}
]

我需要通过程序执行这些操作,当我尝试使用sed shell-->#sed-I's#}#},#'test.json时,基于您的示例输入,这可能适用于您:

$cat input.json\
|grep-v-e'^[:space:]*$'\
|sed-e'1s/^/[/'\
-e'$s/$/]/'\
-e's/^}$/},/'
  • grep
    消除任何空行(如果存在)。这很重要,因为以下
    sed
    需要在最后一个非空行上操作
  • 第一个
    sed
    表达式将
    [
    添加到第一行的开头
  • 第二个
    sed
    表达式将
    ]
    添加到最后一行的末尾
  • 最后的
    sed
    expresison在一行中的任何
    }
    后面添加一个逗号

通过在第三个之前应用第二个
sed
,最后一个
}
将变成
}]
,这样
}
就不再单独在一行上了。

根据您的示例输入,这可能适用于您:

$cat input.json\
|grep-v-e'^[:space:]*$'\
|sed-e'1s/^/[/'\
-e'$s/$/]/'\
-e's/^}$/},/'
  • grep
    消除任何空行(如果存在)。这很重要,因为以下
    sed
    需要在最后一个非空行上操作
  • 第一个
    sed
    表达式将
    [
    添加到第一行的开头
  • 第二个
    sed
    表达式将
    ]
    添加到最后一行的末尾
  • 最后的
    sed
    expresison在一行中的任何
    }
    后面添加一个逗号

通过在第三个之前应用第二个
sed
,最后一个
}
变为
}]
,这样
}
就不再单独在线了。

谢谢!这很有魅力。我能知道我在哪里可以学到这些吗?谢谢!这很有魅力。我能知道我在哪里可以学到这些吗?
[{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },,
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },,
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
},
{
    "ComplianceType": "",
    "Details": {
        "InstalledTime": "",
        "PatchBaselineId": "",
        "PatchState": ""
    },,
    "ExecutionSummary": {
        "ExecutionId": "",
        "ExecutionTime": "",
        "ExecutionType": ""
    },,
    "Id": "",
    "ResourceId": "",
    "ResourceType": "",
    "Severity": "",
    "Status": "",
    "Title": ""
},
]