如何在python 3中创建一个精确的关键字搜索功能

时间:2017-03-25 03:41:31

标签: python python-3.x for-loop

我正在创建一个生成随机字符串的程序,将它们放入列表中,并通过for循环运行这些字符串,该循环应该搜索文件以检查它们是否是真实的单词。循环是这样的:

wordvalidator = open("englishwords.txt", "r")
for line in wordvalidator:
    for item in stringslist:
        if item in line:
            words.append(item)

“englishwords.txt”是包含大量单词的文件,用于验证作为实际单词的随机字符串,“stringslist”显然是带有字符串的列表,而“words”是列表中的字符串已被证实是属于真实的话语。问题是,如果例如有一个字符串,让我们说“ird”,这不是一个真正的单词,它将搜索所有单词并将其与“bird”匹配。这是一个问题,因为我不知道如何真正验证这些字符串现在是否是单词。我不知道该怎么做,除了可能用“if item is line”替换“if in line”,这会修改条件只有在字符串与文档中的行完全对应时才为true,但是我不知道“是”是否是一个真正的python术语,我也不知道我还能用什么类似的东西。任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

with open("englishwords.txt") as wordvalidator:
    validset = set(map(str.strip, wordvalidator))

words = [word for word in stringslist if word in validset]

基本上,使用set因为它会进行快速成员资格测试(if word in validset),并且不使用in来检查字符串是否相等,因为它会进行子字符串搜索不想要。