2015-12-03 100 views
0

一個奇怪的事情發生在這裏,我試圖增加兩個額外的行到現有的csv文件,所以我打開它(edit1.csv),重新它 - 寫入到一個新文件(EDIT 2)有兩個額外的行(一個寫在第一空間數字100,並且在前三空間的第二行以數字9。「列表索引超出範圍」迭代通過csv文件時

ifile = open('C:\PyProject\edit1.csv', "rb") 
reader = csv.reader(ifile) 
edited = open('C:\PyProject\edit2.csv', "wb") 
writer = csv.writer(edited, delimiter=',') 
for row in reader: 
    writer.writerow(row) 
writer.writerow([100]) 
writer.writerow('999') 
edited.close() 
ifile.close() 

到目前爲止好,我得到一個新的文件(edit2.csv),看起來完全像我希望它看起來

問題是,當我試圖迭代通過新文件,以找到第二行列是空的(見下文),我得到一個錯誤

-

with open('C:\PyProject\edit2.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',') 
    sec_col = [] 
    for row in readCSV: 
     blanker = row[1] 
     sec_col.append(blanker) 
    trial_index = [i for i,x in enumerate(sec_col) if x == ''] 

-

blanker = row[1] 
    IndexError: list index out of range 

奇怪的是,如果我打開新文件,並刪除所有空行後兩個我都手動添加,代碼運行得很好。

很抱歉,如果我的代碼是有點亂,我還是新在這個:)

感謝。

+0

解決,加入[100,「」,「」],而不是僅僅100對不起張貼這樣一個小問題。 – Zennie

回答

0

唯一的錯誤部分是直接訪問row[1]

如果行只有一行,那麼當你試圖到達第二行時它會拋出異常。

只需修改這樣的代碼:

for row in readCSV: 
    if len(row) < 2: # row[1] not exists 
     sec_col.append(row) 
+0

它不起作用。 sec_col僅獲取值100,這是我手動添加的行,但不會獲得其中只有1個值的所有其他行的值。除此之外,原始代碼確實找到了其中有一個值的行,但沒有找到最後添加的行(其中有100個)。 – Zennie

+0

它仍然不能解釋爲什麼我的代碼在我去的時候設法完美地工作,並且使用excel手動刪除了csv文件中的所有空白行。感謝您的幫助,如果您有任何更多的想法,我會很樂意嘗試。 – Zennie