Python需要将花括号替换为(花括号和逗号)
我有一个包含数十万行的JSON响应,所有的解析都来自python字典,并使用JSON.load转换为JSON 现在获取带有无效响应的JSON响应,因此解决方法如下 响应Python需要将花括号替换为(花括号和逗号),python,json,shell,boto3,Python,Json,Shell,Boto3,我有一个包含数十万行的JSON响应,所有的解析都来自python字典,并使用JSON.load转换为JSON 现在获取带有无效响应的JSON响应,因此解决方法如下 响应 { "ComplianceType": "", "Details": { "InstalledTime": "", "PatchBaselineId": "", "PatchState": "" }, "ExecutionSummary": {
{
"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
添加到最后一行的末尾]
- 最后的
expresison在一行中的任何sed
后面添加一个逗号}
通过在第三个之前应用第二个
sed
,最后一个}
将变成}]
,这样}
就不再单独在一行上了。根据您的示例输入,这可能适用于您:
$cat input.json\
|grep-v-e'^[:space:]*$'\
|sed-e'1s/^/[/'\
-e'$s/$/]/'\
-e's/^}$/},/'
消除任何空行(如果存在)。这很重要,因为以下grep
需要在最后一个非空行上操作sed
- 第一个
表达式将sed
添加到第一行的开头[
- 第二个
表达式将sed
添加到最后一行的末尾]
- 最后的
expresison在一行中的任何sed
后面添加一个逗号}
通过在第三个之前应用第二个
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": ""
},
]