【问题标题】:Spell check for python inputpython输入的拼写检查
【发布时间】: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


【解决方案1】:

您可以在用户输入和 csv 值中使用 str.lower 以忽略大小写。

您可以使用str.startswith 将用户输入与来自 csv 的值的开头进行匹配。您还可以使用in 来确定用户输入是否在来自 csv 的值中。

【讨论】:

  • 这很棒。我能够使用 lower() 函数。我还在学习如何实现startswith。
  • @stevenmiller 你可能想要if value_from_csv.startswith(user_input):
猜你喜欢
  • 2012-10-20
  • 2012-12-05
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多