Пустой файл после очистки данных
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 шт):
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, т.к это выглядит более уместно в данной ситуации.