Удалить строки json на основе определенной строки

У меня есть файл json, который выглядит примерно так:

[{"headline":"Ntugamo court issues criminal summons against Rukutana",
"url_src":"\/news\/headlines\/67240-ntugamo-court-issues-criminal-summons-against-rukutana"},
{"headline":"Corruption: Equal Opportunities Commission boss granted bail",
"url_src":"\/news\/headlines\/67239-corruption-equal-opportunities-commission-boss-granted-bail"},
{"headline":"Bobi Wine to launch corruption manifesto in Mbarara rejects EC security team",
"url_src":"https:\/\/www.monitor.co.ug"}]

Я пытаюсь найти и удалить все разделы внутри { и }, содержащие слово Corruption, включая сами фигурные скобки.

Например, в этом случае скрипт .py удалит

{"headline":"Corruption: Equal Opportunities Commission boss granted bail",

url_src:/news/headlines/67239-corruption-equal-opportunities-commission-boss-granted-bail}

а также удалить

{"headline":"Bobi Wine to launch corruption manifesto in Mbarara rejects EC security team","url_src":"https:\/\/www.monitor.co.ug"}

Возможно ли это с Python 2.7?


person krustov    schedule 06.12.2020    source источник
comment
Да, это возможно, вы пробовали что-нибудь сделать?   -  person Tomerikoo    schedule 06.12.2020
comment
Отвечает ли это на ваш вопрос? Удалить словарь из списка   -  person Tomerikoo    schedule 06.12.2020


Ответы (1)


Для перебора каждого dict в list.

Преобразуйте каждый словарь в строку на каждой итерации и используйте if "corruption" not in str(d).lower(), чтобы проверить, находится ли строка "corruption" в строчной строке. Если нет, то держи:

import json

with open("j.json", "rb") as f:
    lst = json.load(f)

lst = [d for d in lst if "corruption" not in str(d).lower()]

print(lst)

Выход:

[{'headline': 'Ntugamo court issues criminal summons against Rukutana',
  'url_src': '/news/headlines/67240-ntugamo-court-issues-criminal-summons-against-rukutana'}]

Если вы хотите записать список обратно в файл json, используйте json.dump:

with open("j.json", "w", encoding="utf8") as f:
    json.dump(lst, f)
person Ann Zen    schedule 06.12.2020
comment
Это восхитительно. Как я могу сохранить файл json с новым выводом? - person krustov; 06.12.2020