私は姓となるはずのユーザーの入力を受け取るコードを持っています。私のコードはその入力を受け取り、入力名が関連付けられているプロジェクトと時間をcsvで検索します。私が実行している問題は、スペルが間違っているか、コードが動作しない各名前の最初の文字を大文字にしない場合です。ユーザーが最初の3文字を入力した場合など、コードが自動的に正しいスペルを引き受け、それに応じて入力を変更する機能や方法がありますか?私は非常に初心者のコーダーなので、どんな助けも素晴らしいだろう。Pythonの入力のためのスペルチェック
は、ここに参考のために私のコードです:あなたはケースを無視して、CSVからのユーザ入力と値の両方にstr.lower
を使用することができます
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()' –
ファジーマッチングを見ることができます。 https://marcobonzanini.com/2015/02/25/fuzzy-string-matching-in-python/ – SuperStew
比較の前にすべての文字列を小文字にしておくと、操作が簡単になります。 '' full_name = input( 'あなたのフルネームを入力してください' ').strip()。lower() '' '' .join((row [0]、row [1]))lower() 'など – davedwards