2016-08-09 12 views
-1

次のコードを使用すると、csvファイルを作成してもエラーが発生します。私は助けが必要で、Pythonにはかなり新しいです。 = [x.encode( 'utf8を' 値では、 "/home/ubuntu/workspace/parse-json.py、行34:Pythonでjsonからcsvにインポート

私は受信エラーが「 ファイルトレースバック(最新の呼び出しの最後)" であります。)アイテム[ 'フィールド']でxの値()] はTypeError:文字列のインデックスは整数でなければなりません」

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

は、これらの2つです別々のファイル?同じインポートが2回あります。 – jpmc26

+0

また、お客様のデータがないため、問題を診断することはできません。 [MVCE](http://stackoverflow.com/help/mcve)を作成します。これは、data.jsonの一部を直接ファイルに残すのではなく、文字列として使用することが好ましいです。 (そうすることで、問題が明らかになることさえあります)。 – jpmc26

答えて

0

あなたのデータ構造をチェックする必要があります。 基本的には、エラーは、itemは辞書ではないということです。

あなたのコードには、dataを反復していますが、データは辞書のリストではなく、辞書自体です。

あなたは辞書内の要素を反復処理したい場合は、以下のいずれかを実行する必要があります

for key, value in data.items(): 

またはあなただけの値を反復処理したい場合:

for value in data.values(): 
関連する問題