Python 3.x Неполный поиск строки в списке

#python

#python

Вопрос:

У меня есть словарь, который выглядит как

 stopCommands = {"quit": "I will quit now", "stop": "Goodbye!"}
  

и затем у меня есть код, который просматривает это, и если переменная равна одной из этих, он выводит значение

 userInput = input("Enter your command: ").casefold()
if userInput in stopCommands
    print(stopCommands[userInput])
  

Это работает, но что, если пользователь ошибается в написании или вводит shut off вместо shut down ?

Как я могу заставить поиск учитывать эти ошибки и выбирать правильную вещь хотя бы некоторое время?

Комментарии:

1. Вам придется выполнить какое-то нечеткое сопоставление, которое слишком широкое для вопроса SO.

2. 1. Это список, а не словарь. 2. Если пользователь неправильно написал слово, то сравнение завершается неудачей. Вам нужно было бы добавить некоторый (сложный) алгоритм для проверки похожих слов

3. Вы ожидаете, что это stopCommands как dict , и извлекаете ее значение как dict но на самом деле у вас есть list объект. Вам нужно извлечь значение, используя index (которые являются int значениями)

4. Пользователь будет использовать [ctrl] [C]. если он хочет уйти…

5. Извините за неправильное именование.

Ответ №1:

На предмет орфографических ошибок ознакомьтесь с библиотекой fuzzywuzzy.

Чтобы быть более гибким в целом, кроме перечисления всех возможных команд, о которых вы можете подумать:

  1. Сначала удалите все пробелы из пользовательского ввода, чтобы вам не приходилось перечислять оба shut down и shutdown . На самом деле просто удалите все символы, отличные от букв, так что, например, добавление точки в конце подойдет.
  2. Проверьте, содержит ли ввод такие слова, как off , quit или exit , вместо строгого равенства.