如何提取 .txt 文件中特定范围的行?

How can i extract specific range of lines in a .txt file?

在一个文本文件中,我有一个关键文本 "Remuneração total"。在文件中找到该文本行的第二个匹配项后,我应该读取并打印该关键行前后的 20 行。

我试图在互联网上找到类似的东西,但我一无所获。我是 python 编程的新手,所以这对我来说是一项非常艰巨的工作。

我只找到了我想要的第一行。

read_file = open(r"C:\Users\guerr\OneDrive\Documentos\PYTHON\TXT_FILES\file.txt", encoding='utf-8') # open file

lines = read_file.readlines()  # read all lines
for index, line in enumerate(lines):  # enumerate the list 

    if key in line: 
        print(line)  

一个 乙 C 丁 乙 F G

如果我的key是"D",前后行的范围是2,对我来说应该是return:

乙 C 丁 乙 F

假设每个字母在不同的行上,您应该遍历列表并在找到键后停止,并记录您所在的行号。然后,再次打开它,如果它与键之间的距离小于或等于范围,则打印该行。

例如:

key = "D"
lines = read_file.readlines()  # read all lines
for index, line in enumerate(lines):  # enumerate the list 

    if key in line: 
        key_line = index

for index, line in enumerate(lines):
    if abs(index - key_line) <= 2:
        print(line)
lines = '''
A
B
C
D
E
F
G'''

def custom_print(data, key, n):
    g = [data[i-2:i] + [val] + data[i+1:i+3] for i, val in enumerate(data) if key in val]
    return g[0] if g else []

data = lines.split()
print(custom_print(data, 'D', 2))

打印:

['B', 'C', 'D', 'E', 'F']

如果 key 未找到,则 custom_print() returns 空列表。