Получить 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]
→ Ссылка
Автор решения: turdddd

можно вытащить через регулярку /([{.*?}])/

→ Ссылка