Пустой файл после очистки данных

Kод:

d = str(all_users_details)
b = str(re.findall('(?:"id": )(\d+)', d))
ar = [', ']

for x in ar:
    b = b.replace(x, "|")

    with open ('{{ids{0}}}.json'.format(urlfile), 'w', encoding='utf8') as outfile:
        json.dump(b, outfile, ensure_ascii=False, indent=0)

Где:

b = str(re.findall('(?:"id": )(\d+)', d))
ar = [', ']
for x in ar:
    b = b.replace(x, "|")

Это фильтрация поступающих от api данных (которые даются в виде списка), где-то тут закопана ошибка т.к после завершения программы именно этот файл выходит пустым, в то время как нефильтрованный файл цел (в конце я дам часть этого файла). Если запросите весь код я дам, но именно в этой части ошибка т.к только этот файл пуст

Начало основного файла:

[
{
    "id": 982431710,
    "first_name": "Петр",
    "last_name": "Гарин",
    "user": "Engenegar",
    "phone": null,
    "is_bot": false
},
{
    "id": 576352214,
    "first_name": "Товарищ",
    "last_name": "Легасов",
    "user": "moresarcasm",
    "phone": null,
    "is_bot": false
},
{...

Весь "очищенный" файл:

"[]"

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

Автор решения: Mrage
import json
data = json.loads(all_users_details)
ids = []
for item in data:
    ids.append(item.get("id"))
with open(f"{ids[0]}.json", "w", encoding="utf8") as file:
    json.dump("|".join(ids), file, ensure_ascii=False, indent=0)

Не стоит парсить json с помощью регулярных выражений, т.к в модуле json уже есть необходимые для этого инструменты. json.loads преобразует строку json в объект Python, в данном случае в list с dicts в нем. Мы можем итерироваться по листу и получать значения словарей, как из обычного словаря, после преобразования, собирая все id. Так же, я использовал шаблонные строки, вместо метода format, т.к это выглядит более уместно в данной ситуации.

→ Ссылка