Что делать, если после форматирования текста появляются двойные кавычки?

Есть код:

async def delpartner(ctx, time: typing.Optional[int]):
     with open("config.json", "r+") as jsonFile:
          data = json.load(jsonFile)
          names = data.get('partners')
          for idx, id in enumerate(names):
               if id['id'] == time:
                    del names[idx]
                    names1 = ' '.join(map(str, names))
                    names2 = names1.replace('"', ' ')
                    break
                    jsonFile.close()

Суть проблемы: при обработки вывода строкой names1 = ' '.join(map(str, names)) в выводе появляются двойные кавычки.

В JSON файле строка появляется следующим образом:

{
  "partners": [
    "{'id': 1, 'channel_name': 'test'}"
  ]
}

Что должно получится на деле:

{
    "partners": [

            {
                "id": 1,
                "name": "test"
            }
    ]
}

Вопрос: как записать вывод в JSON без этих кавычек?

Правка:

Раньше в JSON записывались данные, и они выглядели так:

{
  "partners": [
    [
      {
        "id": 1,
        "name": "test"
      }
    ]
  ]
}

Мне не нужно было добавление лишних квадратных скобок, я вписал строки:

                    names1 = ' '.join(map(str, names))
                    names2 = names1.replace('"', ' ')

Теперь вместо квадратных скобок стоят двойные кавычки... Как можно убрать скобки или кавычки?


Ответы (1 шт):

Автор решения: CrazyElf

Насколько в итоге удалось разобраться в комментариях, по ключу partners лежал список списков (а внутри дальше был словарь) и нужно было уменьшить вложенность, просто взяв из списка списков первый список:

data['partners'] = data['partners'][0]

А преобразование в строку как в коде вопроса не позволяло решить проблему, потому что строка в json помещается в кавычках и от этих кавычек избавиться никак нельзя.

Но это решение будет правильно работать только в случае, когда parnters всегда содержит ровно один элемент. В других случаях нужно будет делать по-другому.

→ Ссылка