Что делать, если после форматирования текста появляются двойные кавычки?
Есть код:
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 шт):
Насколько в итоге удалось разобраться в комментариях, по ключу partners лежал список списков (а внутри дальше был словарь) и нужно было уменьшить вложенность, просто взяв из списка списков первый список:
data['partners'] = data['partners'][0]
А преобразование в строку как в коде вопроса не позволяло решить проблему, потому что строка в json помещается в кавычках и от этих
кавычек избавиться никак нельзя.
Но это решение будет правильно работать только в случае, когда parnters всегда содержит ровно один элемент. В других случаях нужно будет делать по-другому.