2017-02-02 20 views
0

テキスト文書の行を配列に分割し、それらをjsonに変換してテキストに表示する前に配列の各値に属性を追加しようとしていますファイル。 fields1 [1]のラインのため:「鳴った電子のうち、リストインデックス はIndexError」 リストの索引が範囲外のforループで

はしかし、関係なく、私は私のコードを微調整する方法、私はまだエラーが発生しません。

with open(fileName,'r') as file: 
    for line in file: 
     if line.startswith('-') and 'section1' in line: 
      for li in file: 
       fields1 = li.split(',') 
       testarr.append({ 
       "section1a": fields1[0], 
       "section1b": fields1[1], 
       "section1c": fields1[2] 
       })  
       with open(test_dir,'a+') as test_file: 
        json.dump(testarr, test_file) 

問題がどこにあるのでしょうか?

+0

あなたはここで、入力ファイルの内容を提供することはできますか? –

+0

2011-12-05 11:30:00,54321,12345 上記の行は入力のサンプルです。技術的にフィールド[2]はまだ@SainathBatthala – decemberrobot

+0

を動作させる必要がありますまた、私は3つのフィールドすべてを印刷することができますが、なぜ私はそれを追加することができません知っていない。 – decemberrobot

答えて

2

あなたはいくつかの奇妙なインデントを持っていると私はあなたのエラーは次のようになり場所がわからないんだけど、これはあなたがそれを見つけるのを助ける必要がある内容なし:

testarr = [] 
with open(fileName,'r') as file: 
    for line in file: 
     if line.startswith('-') and 'section1' in line: 
      fields1 = li.split(',') 
      if len(fields1) >= 3: 
       testarr.append(
        { 
        "section1a": fields1[0], 
        "section1b": fields1[1], 
        "section1c": fields1[2] 
        } 
       ) 
      else: 
       print("This line has an error in it: {}".format(line)) 

with open(test_dir,'a+') as test_file: 
    json.dump(testarr, test_file) 
2

li.split(',')を実行したとき、3つに分割されませんでした。分割するには,が足りなかったかもしれません。たとえば、.. li = 'asdf,ffd'これはフィールド1 [2]にエラーが発生します。これは2つの部分にしか分割されないため、['asdf', 'ffd']です。

関連する問題