【发布时间】:2017-08-13 19:55:44
【问题描述】:
我有一些我在 python 2.7 中编写的代码,但是我需要它在 3.6 中工作,当我运行它时,我得到了这个错误,我不知道为什么。
import csv
def ReadFromFile():
with open('File.csv', 'r') as File:
cr = csv.reader(File)
for row in cr:
Name = row[0]
Gender = row[1]
print(Name + Gender)
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
ReadFromFile()
File "F:/Test.py", line 6, in ReadFromFile
Name = row[0]
IndexError: list index out of range
我正在使用与 2.7 中的文件保存在记忆棒上的相同代码,我得到了我想要的结果,但在 3.6 中我遇到了错误。感谢您的帮助
编辑:添加打印 添加打印后我得到了
ELIZABETHFemale
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
ReadFromFile()
File "F:/Test.py", line 6, in ReadFromFile
Name = row[0]
IndexError: list index out of range
所以它给了我第一行,但仅此而已
【问题讨论】:
-
给我们展示一个重现的例子。
-
如果你打印出 row 会得到什么?
-
添加了编辑以显示如果我添加打印会得到什么
-
你没有抓住重点。不要打印出
Name或Gender。只需打印row。没有下标。整排本身。你应该看到问题了,这与你使用的是 Python 2.7 还是 3.6 无关。 -
还要考虑列表索引超出范围意味着什么。如果您有一个名为
mylist的列表并且它有3 个元素,那么这些元素可以被mylist[0]、mylist[1]和mylist[2]引用。如果您尝试mylist[3],则会收到列表索引超出范围错误。那么row告诉你什么?如果row[0]生成的列表索引超出范围,row有多少个元素?
标签: python python-2.7 python-3.x csv