在Python中从下到上搜索
我试图找到一种向上搜索文件的方法,而不是向下搜索并显示找到的行 所以现在我搜索一个文档,找到我要查找的行并打印它。我希望能够从该位置搜索,直到找到不同的行打印,然后继续搜索文档 我到处寻找答案,并在其他语言中找到了一些东西,但它们在Python中不起作用在Python中从下到上搜索,python,search,Python,Search,我试图找到一种向上搜索文件的方法,而不是向下搜索并显示找到的行 所以现在我搜索一个文档,找到我要查找的行并打印它。我希望能够从该位置搜索,直到找到不同的行打印,然后继续搜索文档 我到处寻找答案,并在其他语言中找到了一些东西,但它们在Python中不起作用 with open(currFile, "r") as f: searchlines = f.readlines() for i, line in enumerate(searchlines): if "(F)" in lin
with open(currFile, "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "(F)" in line:
for l in searchlines[i:i+5]: print >> outfile, l,
您可以这样做以获得反向切片:
searchlines[i-1:i-5:-1]
e、 g:
除了切片,您还可以按相反顺序迭代索引:
for j in xrange(i - 1, i - 5, -1):
l = searchlines[j]
# see if the line is what you want
处理文件时,列表理解通常是您的朋友:
with open("MyFile.txt","r") as f:
lines = [line.strip() for line in f]
在此基础上,使用for循环遍历以下行:
for i,line in enumerate(line):
if SomeCondition:
print(line)
for prevLine in lines[i-1::-1]:
if SomeOtherCondition:
print(prevLine)
break
希望这有帮助:)您最好的选择可能是使用
.readlines
将整个内容读入内存。使用列表比使用文件对象容易得多。欢迎使用StackOverflow!请发布您的代码,它总是为人们的工作提供一个良好的起点。我这样做是为了在其中向前搜索。在您将其放入列表后,使用reversed()
将列表翻转过来。然后按原样搜索,每行缩进四个空格,以便在问题中正确格式化。
for i,line in enumerate(line):
if SomeCondition:
print(line)
for prevLine in lines[i-1::-1]:
if SomeOtherCondition:
print(prevLine)
break