我试图找出如何在文本文件中搜索字符串,如果找到该字符串,则输出下一行。
我在这里看过一些类似的问题,但无法从他们那里得到任何帮助我的信息。
这是我制作的节目。我只是为了解决这个具体问题而做出的,所以它在许多其他方面也可能并不完美。
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)等但到目前为止没有运气。
答案 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