Python Необходимо заменить фигурную скобку на (фигурную скобку и запятую) - PullRequest
0 голосов
/ 26 мая 2020

У меня есть ответ JSON с сотнями тысяч строк, и все синтаксический анализ из словаря python и преобразование в JSON с использованием json .load

Теперь получаю JSON ответ с недопустимый ответ, поэтому обходной путь следующим образом Мне нужно сделать через программу, когда я пытаюсь использовать sed shell -> #sed -i 's #} #}, #' test. json <-. эта команда оболочки заменяет}, in} и возвращает как} ,, </p>

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

Пожалуйста, укажите обходной путь, который работает с оболочкой или python

1 Ответ

2 голосов
/ 26 мая 2020

На основе вашего образца ввода, это может сработать для вас:

$ cat input.json \
    | grep -v -e '^[[:space:]]*$' \
    | sed -e '1s/^/[/'   \
          -e '$s/$/]/'   \
          -e 's/^}$/},/'
  • grep удаляет все пустые строки (если они есть). Это важно, потому что следующее sed должно работать с последней непустой строкой.
  • Первое выражение sed добавляет [ в начало первой строки
  • Второе выражение sed добавляет ] в конец последней строки
  • Последнее sed выражение добавляет запятую после любого }, которое находится в отдельной строке

При применении второго sed перед третьим, последнее } становится }], так что } больше не находится в отдельной строке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...