2013-07-15 174 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