在CSV fi中查找名称

2024-10-01 17:40:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,可以在CSV中找到输入的名称,如果它存在,它会说是,否则不是。但是我在CSV中输入了一个名称,但它仍然显示不

代码如下:

import csv

f=open("student.csv","r")
reader=csv.reader(f)
for row in reader:
    print
studentToFind = raw_input("Enter the name of sudent?")
if studentToFind in reader:
        print('yes')
else:
    print('no')
f.close()

Tags: csv代码inimport名称forinputraw
3条回答

您已经对该文件进行了一次迭代。当您再次尝试循环reader时,没有什么可循环的。在

甚至不要使用csv模块并将文件中的行保存到列表中:

with open("student.csv","r") as f:
    lines = []
    for line in f:
        lines.append(line.rstrip())

studentToFind = raw_input("Enter the name of student?")
if studentToFind in lines:
    print('yes')
else:
    print('no')

你有几个问题:

第一个reader此时是空的,因为您已经循环了它的元素。从file读取是一次性的,如果要多次访问其内容,则需要将其写入数据结构,例如:

rows = []
with open("student.csv", newline='') as csvfile:
  reader = csv.reader(csvfile)
  for row in reader:
    rows.append(row)

但是这也不够,因为rows现在是一个2D列表,因为每个^{} the reader returns本身就是一个列表。easy way to search for a value in nested lists具有列表理解:

^{pr2}$

把它放在一起,这样压痕就更容易看到:

rows = []
with open("student.csv", newline='') as csvfile:
  reader = csv.reader(csvfile)
  for row in reader:
    rows.append(row)

if studentToFind in [cell for row in rows for cell in row]:
  print('yes')
else:
  print('no')

在循环查看文件之前,只需提出以下问题:

import csv

studentToFind = raw_input("Enter the name of student?")

f=open("student.csv","r")
reader=csv.reader(f)
found = "No"
for row in reader:
    if studentToFind in row:
        found = "Yes"

f.close()

print('{}'.format(found))

相关问题 更多 >

    热门问题