В основном вам нужно нечеткое сопоставление строк, см.
https://en.wikipedia.org/wiki/Approximate_string_matching
https: //www.datacamp.com/community/tutorials/fuzzy-string-python
На основании этого вы можете проверить, насколько похожи входные данные по сравнению с вашим словарем:
from fuzzywuzzy import fuzz
name = "nick"
tomatch = ["Nick", "ick", "nik", "nic", "nck", "nickey", "njick", "nickk", "nickn"]
for str in tomatch:
ratio = fuzz.ratio(str.lower(), name.lower())
print(ratio)
Этот код выдаст следующий результат:
100
86
86
86
86
80
89
89
89
Вы должны поэкспериментировать с различными коэффициентами и проверить, какие из ваших требований будут пропускать только одну букву
Переполнение стека использует prettify.js из Google.
Я использую SyntaxHighlighter Алекса Горбачева
http://alexgorbatchev.com/wiki/SyntaxHighlighter
Это используется в сети разработчиков Yahoo