В ответ на gs, вы должны проверить пароль на общие словарные слова (используя хэш, возможно). В противном случае слабый пароль, например «Желтый», будет оценен как сильный по вашей логике.
Это решение требует предварительной обработки вашего корпуса. Но как только это будет сделано, это очень быстрый поиск в словарях.
from collections import defaultdict
from stemming.porter2 import stem
with open('/usr/share/dict/words') as f:
words = f.read().splitlines()
stems = defaultdict(list)
for word in words:
word_stem = stem(word)
stems[word_stem].append(word)
if __name__ == '__main__':
word = 'leukocyte'
word_stem = stem(word)
print(stems[word_stem])
Для корпуса /usr/share/dict/words
это дает результат
['leukocyte', "leukocyte's", 'leukocytes']
Он использует модуль stemming
, который может быть установлен с
pip install stemming