2013-07-15 231 views
-1

我正在針對csv文件運行一些功能。我打電話給一個特定的列和分裂的文本:從列表中選擇特定項目

with open('lasty.csv','rb') as f: 
    reader = csv.reader(f, delimiter=',') 
    for column in reader: 
      entry = column[7].split(" ")[4] 

7列的一個例子是這樣的:

['Withdrawal', 'Debit', '', '', "MITTCHELL'S", 'FISH', 'M', '', '', '', '', 'location', 'location', '', 'location'] 

我收到以下錯誤:

entry = column[7].split(" ")[4] 
    IndexError: list index out of range 

但是,如果我運行:

entry = column[7].split(" ")[0] 

它與out錯誤一起工作,但在[0]之後它給了我同樣的錯誤。

謝謝您的高級。

編輯:

列7之前分裂的樣子:

"Withdrawal Debit MITTCHELL'S FISH M  WINTER PARK FLUS" 

在這種情況下,我希望搶「MITTCHELL的」,當該列是分是在[4]或第5名。

+0

的問題是,第八列沒有8空格分隔的項目。它也許可以是「bc d」,這可以解釋你爲什麼得到一個IndexError。 – inspectorG4dget

回答

2

row是從輸入CSV的個人行和已經拆分成多列。

您正試圖在這種情況下分裂一個空字符串:

>>> ''.split(' ') 
[''] 

只需使用entry = row[4]代替:

for row in reader: 
     entry = row[4] 
+0

第7行是它自己的專欄。請參閱編輯。 – jkdba

+0

@JohnK:你需要仔細檢查你的線路是否爲空。你可以使用'str.split()'*不帶*參數來分割可變寬度的空白,並避免所有這些空字符串。 –

+0

這確實幫助刪除多餘的空間,但我仍然得到索引錯誤。我現在需要致電[2]或第三項。任何想法 – jkdba