运行此部分时,它会返回Value Error: item not in list.
我试图在csv的第5列中搜索特定的数字,然后打印它所在的行。我输入的号码肯定在列表中。有什么帮助吗?
def borrowing():
id = (raw_input("What is the OCLC of the book being borrowed?\n"))
while True:
try:
id = int(id) #changes id to int, must be changed back to str.
break
except ValueError:
id = (raw_input("Enter the OCLC with numbers only: \n"))
id = str(id)
x = open('bl.csv','rU')
reader = list(csv.reader(x))
index = reader.index(id)
if info(index) == id:
y = info[index]
print "The following has been found:",y
答案 0 :(得分:2)
错误位于此行index = reader.index(id)
。
读者实际上返回一个列表,其中所有行都是嵌套列表。因此,要实际从reader
获取索引,您应该像这样传递整行。
index = myreader.index(['column1', 'column2', 'column3', 'column4'])
但是如果你正在寻找一个特定的属性,那么你应该做这样的事情。
def borrowing():
id = (raw_input("What is the OCLC of the book being borrowed?\n"))
while True:
try:
id = int(id) #changes id to int, must be changed back to str.
break
except ValueError:
id = (raw_input("Enter the OCLC with numbers only: \n"))
id = str(id)
x = open('bl.csv','rU')
reader = list(csv.reader(x))
id = str(id)
x = open('bl.csv','rU')
reader = list(csv.reader(x))
index = 0
for ind, item in enumerate(myreader):
if id in item:
index = ind
print 'Found it'
print ind+1,': This is row number'#Because index start with 0
print index #Here it is. Assigned!!!
答案 1 :(得分:2)
首先,在寻求帮助时,您应该发布您收到的完整错误消息。
现在,我猜测你的问题来自以下两行代码:
reader = list(csv.reader(x))
index = reader.index(id)
reader
包含列表列表(每行是一个字符串列表),reader.index(id)
当然无法找到任何内容。
你必须像这样迭代reader
:
for n, row in enumerate(reader):
if row[4] == id:
print n, row
顺便说一下,不需要reader
列表。您可以直接迭代csv.reader()
:
for n, row in enumerate(csv.reader(x)):
...
答案 2 :(得分:1)
csv.reader是二维的。第一个维度是行,第二个维度是列。所以你不能在其中找到5个。