«Ошибка типа: индексы списка должны быть целыми или фрагментами, а не кортежем» — как решить

#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