Я работаю над приложением и хочу извлечь данные из файла json с помощью ключа и сохранить их в файле csv для дальнейшего использования.
Пример данных json выглядит примерно так:
[ {"Name " : "John","Office":"1st Ave", "Birth date": "1978-01-01"}, {"Name":"Jane","Office": "2nd Ave","Birth date": "1970-01-01"}]
Это просто фиктивные данные
Пока что я сделал это:
with open("input.json") as infile, open('output.csv', 'w') as outfile:
writer = csv.writer(outfile, delimiter=' ')
i=0
for line in infile:
d = json.loads(line)
writer.writerows(d[i]['Name'])
i=i+1
но с этим кодом проблема, с которой я сталкиваюсь, заключается в том, что файл csv выглядит примерно так:
J
o
h
n
вот и все, что я хочу:
Name
John
Jane
Любая идея о том, почему это происходит и как это можно решить?
Также :
Я хотел бы добавить метку в csv как 0 в качестве второго столбца. Как в :
Name ID
John 0
Jane 0
Я, как уже упоминалось, это просто фиктивные данные






Для каждой строки ваше «Имя» не является списком.
line = '{"Name": "John", "Office": "1st Ave", "Birth date": "1978-01-01"}'
d = json.loads(line)
d['Name'] # "John"
Вам нужно создать список предметов перед writerows:
names = [json.loads(x)['Name'] for x in lines]
writer.writerows(names)
Лично я бы пошел довольно прямолинейно с pandas
import pandas as pd
df = pd.read_json('input.json')
df['Name'].to_csv('output.csv', index=False)
df['ID'] = O
df[['Name','ID']].to_csv('output_2.csv', index=False, sep = ' ')
Насколько я понял значение 'ID' всегда равно 0. Правильно?
да, идентификатор - это просто еще один столбец, в котором все записи равны 0 в файле csv, но с помощью этого кода он добавляется в тот же столбец вместо нового столбца?
в коде я определяю новый столбец и устанавливаю значение 0. Затем я беру подмножество набора данных («Имя», «Идентификатор») и экспортирую его в нужный CSV-файл.
Может не иметь значения, но ваши ключи во входном файле неоднородны: у вас есть «Имя» (с последним пробелом) и «Имя» (без конечного интервала)