2017-03-29 52 views
2

我正在創建一個代碼,它從csv文件獲取行並將它們傳輸到整數列表中。但是,如果我在該行中留下一些空白條目,則會出現「列表索引超出範圍」錯誤。下面是代碼:如何使用Python從csv文件的行中刪除空字符串

import csv 

with open('Test.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=',') 
    rows = [[int(row[0]), int(row[1]),int(row[2]),int(row[3])] for row in reader] 


for row in rows: 
    print(row) 

我擡頭一看這個網站,因爲我得到了解決最好的主意了一些類似的問題是:

rows = [[int(row[0]), int(row[1]),int(row[2]),int(row[3])] for row in reader if len(row)>1] 

但是,它與導致同樣的錯誤。

在此先感謝!

回答

1

問題是,如果你沒有一個int或它是空的,演員將失敗。

下面的示例在值不是int或爲空的情況下插入零「0」。把它換成你想要的。

您可以優化代碼,但是這應該工作:

編輯:短版

import csv 

def RepresentsInt(s): 
    try: 
     int(s) 
     return True 
    except ValueError: 
     return False 
l = [] 
with open('test.csv', 'r') as f: 
    reader = csv.reader(f, delimiter=',') 

    for row in reader: 
     l.append([int(r) if RepresentsInt(r) else 0 for r in row]) 

for row in l: 
    print(row) 
+0

非常感謝您!代碼工作得很好。快速的問題是,如果我想擺脫每行中的零,我需要添加什麼。我試過'因爲我在行:如果我== 0:行刪除我'。 – Yar

+0

我的意思是我在行中:if row [i] == 0:row remove(row [i])'。 – Yar

+0

你是什麼意思,只要沒有數據,而不是添加0(零),添加/顯示列表中的其他東西?如果是的話,你想添加什麼? –

相關問題