尝试从CSV索引数据

0 投票
2 回答
10234 浏览
提问于 2025-04-17 07:57

我之前开始做一个简单的程序,最近又重新开始了。现在我想用一个索引来改变从CSV文件中读取的数据的打印顺序。但是当我运行这段代码时,出现了“IndexError: list index is out of range”的错误。这是我哪里做错了或者漏掉了什么呢?谢谢大家的帮助。

import csv

mags = csv.reader(open("mags.csv","rU"))

for row in mags:

     print [titles.upper( ) for titles in row]

     print [row[index] for index in (1, 0)]

2 个回答

1

根据csv.reader()的说明,从csv文件中读取的每一行都会以字符串列表的形式返回。我猜你的文件里可能有空的字段或者空行。

所以你可以这样做:

members = csv.reader(open("mags.csv","rU"))
for row in members:
 for index in (1, 0):
   if index < len(row):
      print row[index]

不过你也可以使用:

members = csv.reader(open("mags.csv","rU"))
for row in members:
  row.reverse()
  for element in row:
     print element
1

你的错误看起来出现在代码的最后一行。你的循环可能遇到了一个空行,这个空行没有任何字段,所以当你试图访问 row[index] 时就会出现 IndexError(索引错误)。或者说,这一行只有一个字段,当 index 是 1 的时候,访问 row[index] 也会出错。下面的代码可以解决这个问题:

if len(row) >= 2:
    print [row[index] for index in (1, 0)]

撰写回答