2016-08-09 5 views
-1

다음 코드를 사용하면 CSV 파일을 생성하더라도 오류가 계속 발생합니다. 도움이 필요하며 파이썬에 대해 상당히 새로운 것입니다. = [x.encode ('UTF-8' 값을 "/home/ubuntu/workspace/parse-json.py, 라인 34 :json을 파이썬으로 가져 오기

내가받을 오류는" 파일 역 추적 (가장 최근의 호출 마지막) "입니다 .) 항목 [ '필드']에서 x의 값()] 형식 오류 : 문자열 인덱스는 정수 여야합니다 "

import json 
from pprint import pprint 

with open('data.json') as data_file:  
data = json.load(data_file) 

#pprint(data) 

# calc number of alert records in json file 
x = len(data['alerts']) 


count = 0 
while (count < x): 
    #print 'COUNT = ', count 
    print data['alerts'][count]['message'] 
    print data['alerts'][count]['tags'] 
    print data['alerts'][count]['teams'] 
    print data['alerts'][count]['id'] 
    count = count + 1 

import json 
import csv 

f = open('data.json') 
data = json.load(f) 
f.close() 

f = csv.writer(open('yes.csv', 'wb+')) 

for item in data: 
    values = [ x.encode('utf8') for x in item['fields'].values() ] 
    f.writerow([item['pk'], item['model']] + values) 
+0

그 두 가지 별도의 파일? 동일한 가져 오기가 두 번 있습니다. – jpmc26

+0

또한 데이터가 없기 때문에 문제를 진단 할 수 없습니다. 가급적이면 data.json의 일부를 파일로 남기지 않고 직접 문자열로 사용하는 [MVCE] (http://stackoverflow.com/help/mcve)를 만드십시오. 그렇게하면 문제가 분명해질 수도 있습니다. – jpmc26

답변

0

당신은 당신의 데이터 구조를 확인해야합니다. 기본적으로 오류가 말하는 것은 item이 사전이 아닙니다.

코드에서 볼 수 있듯이 data을 반복하고 있지만 데이터는 사전 목록이 아니라 사전 자체입니다.

당신이 딕셔너리의 요소를 반복하려면, 다음을 수행해야합니다

for key, value in data.items(): 

또는 당신은 단지 값을 반복하려는 경우 :

for value in data.values():