【发布时间】:2017-12-06 21:53:19
【问题描述】:
我对 python 很陌生,所以请耐心等待。我有这段代码,我在下面插入了一个 while 循环,以确保每次给定名称时它都会检查以验证名称是否在 csv 中,然后如果不是,它会给出错误并要求一个新名称。我的问题是我似乎无法摆脱困境。即使有一个我知道的新名称在 csv 中,它仍然停留在循环中。我的问题是如何让这段代码循环运行并验证名称是否存在?任何帮助都会很棒。如果有更好的编写方法,我什至愿意更改整个代码。
这是我得到的:
import csv
full_name = input('Enter your full name: ').lower()
with open('Report1.csv') as csvfile:
hour_summation = {}
read_csv = csv.reader(csvfile, delimiter=',')
for row in read_csv:
while (' '.join((row[0], row[1]))).lower() != full_name.strip().lower():
print('Name is not in system')
full_name = input('Enter your full name: ').lower()
if(' '.join((row[0], row[1]))).lower() == full_name.strip().lower():
hour_summation[row[2]] = hour_summation.get(row[2], 0) + int(float(row[3]))
print('This is {} full hours report:'.format(full_name))
for k, v in hour_summation.items():
print(k + ': ' + str(v) + ' hours')
这是我输入时的结果: 供参考。 Steve Miller 不在 csv 文件中,因此第一个响应是正确的。但是,Sri Mantri 在文件中,它应该继续打印出她名下的所有列表。
Enter your full name: Steve Miller
Name is not in system
Enter your full name: Sri Mantri
Name is not in system
这是代码运行时的输出结果。
Enter your full name: Sri mantri
This is sri mantri full hours report:
Beeline Blank: 28 hours
SRV-0001 Service Requests for Base and Direct Services: 4 hours
SUP-0001 Support Requests with a CISM Ticket: 129 hours
SUP-2503 Web Application Maintenance & Support: 72 hours
0026184229 Margin Controlling Java Rewrite: 4 hours
0033472751 PRE-AFE 2017 - CMS Enhancements: 2 hours
0033472863 PRE-AFE 2017 - BPM Enhancements: 67 hours
APP-10008 Pre-Series (Non-Mainframe): 4 hours
APP-10146 Logistics (Non-Mainframe): 3 hours
APP-10195 Vehicle Labor System (Mainframe): 3 hours
APP-10354 Web PartsPro (Non-Mainframe): 1 hours
APP-10431 VIPService (Non-Mainframe): 1 hours
APP-10432 VIPService (Mainframe): 3 hours
APP-10536 Truck Invoice Adjustments (Mainframe): 2 hours
csv 看起来像这样:
First Name Last Name Activity Hours
Sri Mantri SUP-2503 Web Application Maintenance & Support 11
Sri Mantri SUP-2503 Web Application Maintenance & Support 3
Sri Mantri SUP-2503 Web Application Maintenance & Support 5
Sri Mantri SUP-2503 Web Application Maintenance & Support 2
Jeff Moore SUP-2503 Web Application Maintenance & Support 3
David Ayers SUP-2507 NAFTA MFTS OS Support 10
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 4
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 3
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 1
Prasanth Musunuru 0020826809 Vertex 6.0 at the NDC 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 1
Jeff Moore 0024480049 Fuel Tanks (infrastructure) - time tracking 4
【问题讨论】:
-
带有第二个
input的while-loop 位于for-loop 内,因此它只查看当前处理的row。 -
那么你认为我应该删除 for 循环吗?
-
@stevenmiller 您的 csv 文件没有任何逗号。
-
@Goyo,我不太确定如何将 csv 添加到问题中,所以我只是从 python 中提取了它。
标签: python loops csv while-loop