今天是我第一次学习csv和python。对不起,如果我问一个已回答的问题。我正在使用CSV dictreader。可以说我有一个包含以下行的文件:
{'age': '20', 'name': 'Alice'}
{'age': '21', 'name': 'Freddie'}
{'age': '17', 'name': 'Bob'}
我将创建一个程序,允许用户输入其名称。如果它与数据匹配,它将输出true。我尝试在其中使用for循环和if else语句。
但是,它循环整个数据而不是我正在查看的特定数据。例如,如果我输入“鲍勃”,我得到
Enter Name:Bob
No record found
No record found
true
代替
Enter Name:Bob
true
我相信这是因为我创建了for循环,但我仍然不确定如何应对它。
import csv
name1 = input("Enter Name:")
filePath = "data.csv"
with open(filePath) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if name1 == row['name']:
print("true")
break
else:
print("No record found")
答案 0 :(得分:2)
<th>
@Html.DisplayNameFor(model => model.YearCompleted)
</th>
在最后一行,因此它必须从头开始遍历所有行,直到找到Bob
然后它存在。
您可能只想在末尾打印Bob
,而不是在每次迭代中都打印。这是使用标记来记住是否找到该术语的建议:
No records found
答案 1 :(得分:1)
将No record found
消息放入for
循环是错误的。
无论您放入for
循环中的任何内容,都可以运行0、1或多次。对于No record found
消息,很多没有任何意义。
因此,该消息必须超出for
循环之外:
for row in reader:
if row['name'] == name1:
print("found it")
return
print("no record found")
答案 2 :(得分:1)
for
(和while
)循环实际上可以在其后有一个else
。仅当循环没有被break
中断时,才输入此子句。因此,您只需缩进else
子句:
with open(filePath) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
if name1 == row['name']:
print("true")
break
else:
print("No record found")