Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中从下到上搜索_Python_Search - Fatal编程技术网

在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

我试图找到一种向上搜索文件的方法,而不是向下搜索并显示找到的行

所以现在我搜索一个文档,找到我要查找的行并打印它。我希望能够从该位置搜索,直到找到不同的行打印,然后继续搜索文档

我到处寻找答案,并在其他语言中找到了一些东西,但它们在Python中不起作用

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