#python #json #csv
#python #json #csv
Вопрос:
Я хочу преобразовать свой большой файл json (до 1 ГБ) в csv, а затем распечатать его.Мой код:
f = open('C:\Users\non_coder\Desktop\datasets_fldr\layer2.json',)
data = json.load(f)
f.close()
df = json_normalize(data['ingredients',])
d_file = df.to_csv('json-to-csv.csv', sep=',', encoding='utf-8')
print(d_file)
Затем ошибка:
<ipython-input-23-4a2ec3b63241> in <module>
5 f.close()
6
7 ---->df = json_normalize(data['ingredients',]) #problem indicates in this line
8 d_file = df.to_csv('json-to-csv.csv', sep=',', encoding='utf-8')
9 print(d_file)
TypeError: list indices must be integers or slices, not tuple.
Как мне с этим справиться
Комментарии:
1. Что произойдет, если вы уберете «,» в конце
data['ingredients',]
?2. Попробуйте распечатать
data
.3. Судя по сообщению об ошибке,
data
это список, поэтому нет смысла пытаться индексировать его по строке.
Ответ №1:
f = open('C:\Users\non_coder\Desktop\datasets_fldr\layer2.json',)
data = json.load(f)
f.close()
df = json_normalize(data['ingredients']) # <------- delete the comma here
d_file = df.to_csv('json-to-csv.csv', sep=',', encoding='utf-8')
print(d_file)
Комментарии:
1. Я не верю, что это решит проблему. В ошибке упоминаются индексы списка, поэтому
data
предположительно это список, и вы не можете индексировать список с помощью строки.2. Это решит
tuple
проблему, тогда вам нужно будет выяснить, что такое «корневой» элемент в вашем JSON и является ли он массивом.3. Кортеж @MetallimaX решен, но все еще проблема в типе, индексы списка не должны быть str.
4. Можете ли вы поделиться своим JSON или в списке анонимным аналогичным?
5. Я разделяю разделенный JSON