2017-02-02 57 views
0

我想將文本文檔中的行分割成數組,並將屬性附加到數組中的每個值,然後將它們轉換爲json以顯示在文本中文件。列表索引超出範圍python in for循環

然而,無論我如何調整我的代碼,我還是遇到錯誤「 IndexError:列表索引響電子商務」爲fields1 [1]行。

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 上面的行是輸入的一個示例。有3列,所以技術上[2]字段仍然應該工作@SainathBatthala – decemberrobot

+0

此外,我添加了所有3列的打印聲明,它能夠打印所有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'這將給fields1 [2]賦予錯誤,因爲它只會分成兩部分['asdf', 'ffd']