Получить json из всего текста с помощью регулярки
Хочу достать json из строки.
[{"json0":"1"}] fdfdfdfdsgfdgd [{"you":"12"}] fdfdfdfdsgfdgd fdfdfdfdsgfdgd fdfdfdfdsgfdgd [{"youthe:"121"}]
Хочу из этой всех кучи доставать json форматы(данные бывают и другие, но json начинается с [{ и заканчивается }]). У меня получилось сделать с помощью find, но оно получает только один массив
Ответы (2 шт):
Автор решения: Dmitry
→ Ссылка
через регулярные выражения можно сделать так
>>> import re
>>> import json
>>> pattern = r"\[(.*?)\]"
>>> str_ = '[{"json0":"1"}] fdfdfdfdsgfdgd [{"you":"12"}] fdfdfdfdsgfdgd fdfdfdfdsgfdgd fdfdfdfdsgfdgd [{"youthe":"121"}]'
>>> all_jsons = re.findall(pattern, str_)
>>> all_jsons
['{"json0":"1"}', '{"you":"12"}', '{"youthe":"121"}']
>>> list_for_dicts = []
>>> for i in all_jsons:
... d = json.loads(i)
... list_for_dicts.append(d)
...
>>> list_for_dicts
[{'json0': '1'}, {'you': '12'}, {'youthe': '121'}]
>>> # или в одну строку
>>> list_for_dicts = [json.loads(i) for i in all_jsons]