【问题标题】:How to make Python search through a text file and print every matching line?如何让 Python 搜索文本文件并打印每个匹配的行?
【发布时间】:2020-06-12 01:51:31
【问题描述】:

为完全菜鸟问题道歉。我正在努力学习 Python。我已经搜索了这个网站,但没有找到适合我的解决方案。请让我知道是否已经解释过。

我正在尝试为.txt 文件中的电影标题列表创建一个搜索程序,我希望它打印包含用户输入的单词的每一行。

例如,如果文本文件中有两行是

22. It Happened One Night (1934)
23. Wonder Woman (2017)

并且用户输入“on”,我希望这两个(以及任何其他)都出现,因为两者都包含“on”。

我尝试过使用

with open("movies.txt", "r") as f:
     searchlines = f.readlines()
for i, line in enumerate(searchlines):
    if searchphrase in line: 
        for l in searchlines[i:i+3]: print(l),
        print

但这对我不起作用。

【问题讨论】:

  • 请解释一下“没有用”是什么意思。您的代码是否导致错误?还是您根本没有得到任何输出?

标签: python python-3.x list function search


【解决方案1】:
def search(text_search):
    with open("movies.txt", "r") as f:
        searchlines = f.readlines()
        for i, line in enumerate(searchlines):
            if text_search.casefold() in line.casefold():
                print(line)

调用你的函数的例子:search("ON")

编辑缩进

【讨论】:

    【解决方案2】:

    你可以参考下面的sn-p代码

    def search(text_search):
        with open("movies.txt", "r") as f:
            searchlines = f.readlines()
            for i, line in enumerate(searchlines):
                # if line contains text_search we will print it
                if text_search in line:
                    print(line)
    if __name__ == "__main__":
        search("One")
    

    【讨论】:

    • 感谢您的回答!不幸的是,我仍然遇到了它并不总是工作的问题,例如在输入“wonder”时,神奇女侠没有出现
    【解决方案3】:

    可能是这样的:

    with open("movies.txt", "r") as file:
        lines = file.read().splitlines()
    
    keyword = "on"
    
    filtered_lines = filter(lambda line: keyword.casefold() in line.casefold(), lines)
    
    for line in filtered_lines:
        print(line)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多