我目前正在尝试编写一个简单的代码来执行以下操作:要求用户提供客户的电子邮件地址。然后,代码应检查该客户端是否已经注册,并且可以在整个客户端csv中找到其数据(包括电子邮件),并将该特定原始数据提供给用户,从而不必再次键入数据。 / p>
我尝试了以下代码,但是它所做的只是遍历csv中的所有raws,因为我使用了“ print”命令来检查在raw中找不到邮件的情况下,我可以看到,则程序会在包含电子邮件的行上进行迭代,但会将行视为没有邮件所在的行。
由于代码中的原始输出似乎提供了一个字典,也许有一种更优雅的方法来检查邮件是否在原始中,但是当我尝试将输入邮件与例如(data [“ Mail”])我收到一个关键错误。
这是代码,我真的很期待得到答案,因为我无法弄清楚错误可能出在哪里。
def check_mail():
mail=m1.get()
print ("Mail input: ", mail)
with open ("daten\daten_diesel_neu.csv", newline="\n") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data = row
print(data)
if mail in data:
print ("the mail you entered belongs to the following data: ", row)
client_data = data
else:
print ("mail not in ", row)
答案 0 :(得分:0)
如果您的csv文件具有标题,例如First Name, Last Name, Email, ...
,那么您的行将类似于:[('First Name', 'Frank'), ('Email', 'info@spam.com'), ('Last Name', 'The Tank')]
。您要做的是检查mail
是否在行中,但该行始终是字典,并且通过检查dict
中是否有内容,您将仅遍历键。因此,对于每个键,您还需要遍历每个键的值。另外,我建议您使用break
命令来停止搜索。
def check_mail():
mail=m1.get()
print ("Mail input: ", mail)
with open ("daten\daten_diesel_neu.csv", newline="\n") as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
data = row
print(data)
for item in data:
if mail in data[item]:
print ("the mail you entered belongs to the following data: ", row)
client_data = data
break
else:
print ("mail not in ", row)