繁体   English   中英

Python在多行中搜索文本

[英]Python search for text over multiple lines

import os
searchquery = 'word'
with open('Y:/Documents/result.txt', 'w') as f:
for filename in os.listdir('Y:/Documents/scripts/script files'):
    with open('Y:/Documents/scripts/script files/' + filename) as currentFile:
        for line in currentFile:
            if searchquery in line:
                start = line.find(searchquery)
                end = line.find("R")
                result = line[start:end]
                print result
                f.write(result + ' ' +filename[:-4] + '\n')

现在,此方法可以很好地搜索“单词”,并在单词之后打印所有内容,直到“ R”(位于同一行)为止。 但是,如果“ R”在行上,它将不会在其之前打印内容。

例如:

this should not be printed!
this should also not be printed! "word" = 12345
6789 "R" After this R should not be printed either!

在上面的情况下,第3行的6789不会用我当前的信息打印。 但是我希望它是。 我如何使python不断遍历多行,直到到达“ R”。

谢谢你的帮助!

通常不会在下一行上打印内容,因为您正在一行上搜索单词。 更好的解决方案如下。

import os
searchquery = 'word'
with open('Y:/Documents/result.txt', 'w') as f:
    for filename in os.listdir('Y:/Documents/scripts/script files'):
        with open('Y:/Documents/scripts/script files/' + filename) as currentFile:              
            content = ''.join([line for line in currentFile])
            start = content.find(searchquery)
            end = content.find("R")
            result = content[start:end].replace("\n", "")
            print result
            f.write(result + ' ' +filename[:-4] + '\n')

请注意,这仅适用于单个事件。 您将需要进一步分解以打印多个事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM