【发布时间】:2017-12-05 23:05:07
【问题描述】:
我有一个代码,它接受用户的输入,应该是名字和姓氏。然后,我的代码获取该输入并在 csv 中搜索与输入名称关联的项目和时间。我遇到的问题是,如果我拼写错误或不将每个名称的第一个字母大写,则代码将不起作用。如果用户正确输入前 3 个字母或类似的东西,是否有功能或方法,代码将自动假定正确的拼写并相应地更改输入?我是一个非常新手的编码器,所以任何帮助都会很棒。
这是我的参考代码:
import csv
# I've used full name to avoid duplicate first names in report
full_name = input('Enter your full name: ')
with open('Report1.csv') as csvfile:
hour_summation = {}
read_csv = csv.reader(csvfile, delimiter=',')
for row in read_csv:
if ' '.join((row[0], row[1])) == full_name.strip():
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')
【问题讨论】:
-
如果可能的用户名的数量不是太大,则创建一个列表,通过调用
lower()对其进行规范化(对于要搜索的名称进行相同的规范化)并查看在difflib.SequenceMatcher,尤其是ratio() -
在比较之前使所有字符串小写应该会使事情变得容易得多,例如
full_name = input('Enter your full name: ').strip().lower()、' '.join((row[0], row[1])).lower()等
标签: python loops csv spell-checking