Парсинг конкретных переменных из одного JSON файла в другой
Пытаюсь достать из JSON файла нужную мне информацию (строчку Name) и поместить её в другой JSON файл. Вот моя попытка сделать это,но ругается на data = json.load(file),что только не перепробовал,все время именно на эту строчку. Особо не ругайте,только начинаю пытаться разобраться в этом.
import json
with open ("test1.json","r", encoding='utf-8') as file:
with open("res.json", "w") as outfile:
data = json.load(file)
for i in data['Name']:
outfile.write(json.dumps(data))
Вот мой JSON
{
"Name": Oleg,
"Age": "25",
"Date": "22.11.1983"
}{
"Name": Nikolai,
"Age": "21",
"Date": "05.02.1994"
}{
"Name": Egor,
"Age": "19",
"Date": "19.02.1990"
}
Ответы (2 шт):
Немного более сложный пример c 2-мя вариантами вывода отфильтрованных данных:
import json
with open ("test.json","r", encoding='utf-8') as file:
data = json.load(file)
out_data = []
for i in range(0,3):
data2=data['members']
data3=data2[i]
out_data.append(data3['Name'])
with open("res1.json", "w") as file_out1:
file_out1.write(json.dumps(out_data))
with open("res2.json", "w") as file_out2:
json.dump(out_data, file_out2, sort_keys=False, indent=2)
Содержимое файла test.json:
{
"members": [
{
"Name": "Oleg",
"Age": "25",
"Date": "22.11.1983"
},
{
"Name": "Nikolai",
"Age": "21",
"Date": "05.02.1994"
},
{
"Name": "Egor",
"Age": "19",
"Date": "19.02.1990"
}
]
}
На выходе получаем два файла:
res1.json содержит строку:
["Oleg", "Nikolai", "Egor"]
res2.json содержит принятый читаемый код:
[
"Oleg",
"Nikolai",
"Egor"
]
Как видите, не все так просто в работе на Python с форматами json.
P.S. Если для res2.json установить "sort_keys=True", то получим отсортированный по ключу json-файл. Но в данном примере keys в выходных файлах отсутствует.
Вот валидный json-файл с первоначальными данными:
[
{
"Name": "Oleg",
"Age": "25",
"Date": "22.11.1983"
},
{
"Name": "Nikolai",
"Age": "21",
"Date": "05.02.1994"
},
{
"Name": "Egor",
"Age": "19",
"Date": "19.02.1990"
}
]
Вот сам код по обработке данных:
import json
# считываем данные из json-файла с первоначальными данными
with open(r'/path/to/src.json', mode='r', encoding='utf-8') as srcfl:
data = json.load(srcfl)
# собираем нужные нам данные из записей
out_data = [ i["Name"] for i in data ]
# сохраняем данные в новый json-файл
with open(r'/path/to/out.json', mode='w', encoding='utf-8') as outfl:
json.dump(out_data, outfl, sort_keys=True, indent=4)
В результате получим вот такой JSON-файл:
[
"Oleg",
"Nikolai",
"Egor"
]