目前,我有
进口的CSV
并为用户输入了用于输入注册的输入变量。我也有一个名为
“已知的文件reg和names.csv”
我将其称为带有名称,地址和注册的“文档”;如此处所示:Bob Job GH58JBL 9, Henderson lane
Dan strobe WK15HYO 12, Dominic Road
Alex Nail VA11ZWU 6, Yake lane
Sam Jones WX63GKP 273, Soomy Avenue
John English WK64HRK 67, Wane Close
我有一个程序可以检测输入的注册是否在称为注册的变量中;与文档中的注册信息匹配。
import csv
registation=str(input("Please enter you registation plate."))
with open('Known file reg and names.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
for field in row:
if field == registation:
print("We have found your reg in our database")
此方法有效,当输入与文档中的一个匹配的注册时,程序将输出“我们已在数据库中找到您的注册”。
然后,我还有另一段代码“应该”将程序中的注册变量和匹配信息从doc写入具有特定人员详细信息的另一个csv文件。
with open("saved database.csv", "w", newline="") as csvfile:
w = csv.writer(csvfile)
w.writerow([registation])
w.writerow([field])
因此,如果我输入了“ WK15HYO”,则程序应将doc中的信息与输入的注册变量进行比较,然后将其信息重写为
WK15HYO Dan Dominic Road 12号闪光灯
但是,事实并非如此,而是在编写程序
67,Wane Close`和WK15HYO
。它没有写12,多米尼克之路和丹选通。请问我在做错什么以及如何解决问题方面有一些见识。
最佳答案
好,有几件事。首先,您似乎完全不需要遍历每一行中的字段。如果注册始终是第二件事,则只需在row[1]中查找注册。当您将field写入csv文件时,您写入的是分配给变量“ field”的最后一个内容,在这种情况下,是csv的最后一行中的最后一个条目67, Wane Close。下面的代码将专门搜索索引1处的注册,将完整信息另存为user_info(或您选择的任何名称),然后结束迭代。import csv
registation=str(input("Please enter you registation plate."))
with open('Known file reg and names.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if row[1] == registration:
user_info = row
break
当您进行打印时,您现在有了一些选择。是否要将所有信息按名称,注册,地址顺序打印到一行?然后,您可以简单地使用:
with open("saved database.csv", "w", newline="") as csvfile:
w = csv.writer(csvfile)
w.writerow(user_info)
如果您想做其他事情,则可以通过按所需顺序编写每个组件来轻松实现。此人的姓名应为user_info[0],其注册为user_info[1]和地址为user_info[2]。