如何查看任何英文单词中是否包含字符串?

时间:2017-05-29 01:33:19

标签: python nlp pyenchant

取消此链接:How to check if a word is an English word with Python?

有没有办法看到(在python中)英语中的任何单词中是否包含一串字母?例如,fun(wat)将返回true,因为“water”是一个单词(并且我确定有多个其他单词包含wat)但fun(wayterlx)将是错误的,因为wayterlx不包含在任何英语单词中。 (而且它本身不是一个词)

编辑:第二个例子:d.check(“blackjack”)返回true但是d.check(“lackjac”)返回false,但是在我正在寻找的函数中它将返回true,因为它包含在一些英语中字。

1 个答案:

答案 0 :(得分:1)

基于链接答案的solution

我们可以使用Dict.suggest方法

定义下一个效用函数
def is_part_of_existing_word(string, words_dictionary):
    suggestions = words_dictionary.suggest(string)
    return any(string in suggestion
               for suggestion in suggestions)

然后简单地

>>> import enchant
>>> english_dictionary = enchant.Dict("en")
>>> is_part_of_existing_word('wat', words_dictionary=english_dictionary)
True
>>> is_part_of_existing_word('wate', words_dictionary=english_dictionary)
True
>>> is_part_of_existing_word('way', words_dictionary=english_dictionary)
True
>>> is_part_of_existing_word('wayt', words_dictionary=english_dictionary)
False
>>> is_part_of_existing_word('wayter', words_dictionary=english_dictionary)
False
>>> is_part_of_existing_word('wayterlx', words_dictionary=english_dictionary)
False
>>> is_part_of_existing_word('lackjack', words_dictionary=english_dictionary)
True
>>> is_part_of_existing_word('ucumber', words_dictionary=english_dictionary)
True