在python中匹配字符串之前和之后复制几行

时间:2015-09-16 14:21:35

标签: python regex

我是python的新手并尝试编写一个脚本,用于复制5行之前和找到匹配字符串之后的5行

import re

text_file = open(input("Input-file name : ") , "r")
fi =  text_file.readlines()

test = re.compile(r'matching character')

for i in range (len(fi)):
    if test.search(fi[i]):
        print(fi[max(0, i-5)])
        print(fi[max(0, i-4)])
        print(fi[max(0, i-3)])
        print(fi[max(0, i-2)])
        print(fi[max(0, i-1)])
        print(fi[max(0, i-0)])
        print(fi[max(0, i+1)])
        print(fi[max(0, i+2)])
        print(fi[max(0, i+3)])
        print(fi[max(0, i+4)])

有没有比添加多个print语句更好的方法来在一个命令中获取输出。

1 个答案:

答案 0 :(得分:1)

假设匹配的行包含在5行""之后,则:

    block = fi[max(0, i - 5): min(len(fi), i + 5)]

会给你一个行列表。要将列表打印为一个块,您可以执行以下操作:

    print(''.join(block))