阅读Python中的下一行

时间:2015-11-22 10:44:37

标签: python

我试图找出如何在文本文件中搜索字符串,如果找到该字符串,则输出下一行。

我在这里看过一些类似的问题,但无法从他们那里得到任何帮助我的信息。

这是我制作的节目。我只是为了解决这个具体问题而做出的,所以它在许多其他方面也可能并不完美。

def searcher():
    print("Please enter the term you would like the definition for")
    find = input()
    with open ('glossaryterms.txt', 'r') as file:
        for line in file:
            if find in line:
                print(line)

因此,文本文件将由术语组成,然后由其下面的定义组成。

例如:

  

的Python
  我正在使用的编程语言

如果用户搜索术语Python,程序应输出定义。

我尝试了不同的打印组合(行+ 1)等但到目前为止没有运气。

4 个答案:

答案 0 :(得分:5)

你的代码将每一行作为一个术语处理,在下面的代码中,f是一个迭代器,所以你可以使用next来将它移动到下一个元素:

T

答案 1 :(得分:4)

如果你的文件大小很小,那么你可以简单地使用readlines()读取文件,它返回一个字符串列表,每个字符串由\n字符分隔,然后找到所选单词的索引,并且在给定列表中的位置+ 1 打印项目。

这可以这样做:

def searcher():
    print("Please enter the term you would like the definition for")
    find = input()

    with open("glossaryterms.txt", "r") as f:       
        words = list(map(str.strip, f.readlines()))
        try: 
            print(words[words.index(find) + 1])
        except:
            print("Sorry the word is not found.")

答案 2 :(得分:1)

你可以尝试快速而肮脏的旗帜。

HttpContext.Current.Response.SetCookie(cookie);

在设置标志之前,设置“if found:”非常重要。因此,如果您发现下一个迭代/行的搜索词将被打印。

答案 3 :(得分:0)

在我看来,最简单的方法是缓存最后一行。这意味着在任何迭代中你都会得到前一行,并且你要检查它 - 保持循环相对类似

例如:

def searcher():
    last_line = ""
    print("Please enter the term you would like the definition for")
    find = input()
    with open ('glossaryterms.txt', 'r') as file:
        for line in file:
            if find in last_line:
                print(line)
            last_line = line