Python从单词列表功能搜索

时间:2019-09-21 19:52:15

标签: python python-3.x performance python-3.7


由于一个或另一个原因,我在理解如何获取单词列表以在文本文件中搜索我提供的单词列表时遇到问题。我确实找到了一种通过使用“ elif”语句创建单词列表的方法,但是我想正确地做到这一点。 -Python 3.7.x

name = 'Foo'
name1 = 'Bar'
name2 = 'python'
searchfile = open("test.txt","r")
num_lines = 0

for line in searchfile:
    num_lines += 1
    line = line.lower()
    if name in line:
        print ("Found on Line:",num_lines, line)
    elif name1 in line:
        print ("Found on Line:",num_lines, line)
    elif name2 in line:
        print ("Found on Line:",num_lines, line)

我想使“名称”变量具有要搜索的单词列表。就像这样..但是我遇到了错误。

name = ("foo","bar","python")
name1 = ("foo1","bar1","python1")
name2 = ("foo2","bar2","python2")

TypeError:“ in”要求将字符串作为左操作数,而不是元组
也许如果我看到正确的代码,我的大脑就会理解。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

最简单的方法是仅使用for循环

name = ("foo","bar","python")
for n in name:
    if n in line:
        print ("Found on Line:",num_lines, line)

答案 1 :(得分:0)

这是因为在您的示例中name是一个元组,而使name in line会尝试检查元组是否在字符串类型的行内。 您可以像这样遍历要检查的任何单词

name = ('Foo', 'Bar', 'python')
searchfile = open("test.txt","r")

for num_lines, line in enumerate(searchfile, 1):
    for word in names:
        if word.lower() in line.lower():
             print("Found on Line:", num_lines, line)

此外,如果您希望拥有多个“姓名”,可以这样做:

name = ("foo","bar","python")
name1 = ("foo1","bar1","python1")
name2 = ("foo2","bar2","python2")
names = name + name1 + name2

并像以前一样迭代for word in names。我不知道您的要求是什么,但最好创建一个

names = ("foo", "bar", "python", "foo1", "bar1", "python1", "foo2", "bar2", "python2")

作为单个元组而不是N个元组。

相关问题