簡體   English   中英

Python 需要將大括號替換為(大括號和逗號)

[英]Python Need to replace curly bracket with (curly bracket and comma)

我有一個包含數十萬行的 JSON 響應,並且全部從字典 python 解析並使用 Z46485DEEC76ECDF25FCA6 轉換為 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 <--。 此 shell 命令替換 },in },並返回為 },,

[{
    "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": ""
},
]

請提供有效的解決方法 shell 或 python

根據您的示例輸入,這可能對您有用:

$ cat input.json \
    | grep -v -e '^[[:space:]]*$' \
    | sed -e '1s/^/[/'   \
          -e '$s/$/]/'   \
          -e 's/^}$/},/'
  • grep消除了任何空白行(如果存在)。 這很重要,因為下面的sed需要在最后一個非空行上運行。
  • 第一個sed表達式將[添加到第一行的開頭
  • 第二個sed表達式將]添加到最后一行的末尾
  • 最后的sed表達式在單獨一行的任何}之后添加一個逗號

通過在第三個之前應用第二個sed ,最后一個}變為}] ,因此}不再單獨一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM