在匹配的单词后打印一行

时间:2015-04-08 21:17:49

标签: python-2.7

我有一个巨大的文本文件。我每次找到特定的单词后都会尝试打印一行。

示例:

lines = 
"""
match_string
line2_0
somelines
...
...
....
match_string
line_0
...
...
...
match_string
line3_0
.
.
.
.
."""

我的脚本应该找到“match_string”并打印出第一行。

line2_0

LINE_0

line3_0

1 个答案:

答案 0 :(得分:5)

您可以从字符串中的行创建迭代器,并在当前行找到匹配项时使用next打印下一行。然后,for循环将自动继续使用该行。

iterator = iter(lines.splitlines())
for line in iterator:
    if "match_string" in line:
        print next(iterator)

或从文件中读取行:

with open("huge_text_file.txt") as file_iterator:
    for line in file_iterator:
        if "match_string" in line:
            print next(file_iterator)

输出:

line2_0
line_0
line3_0

请注意,如果包含StopIteration的行后面没有next行,则此可以引发match_string例外。在这种情况下,只需将代码包装在try/except块中。