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

时间:2019-06-24 21:01:09

标签: python jupyter-notebook text-extraction

在文本文件中,我有一个关键文本“Remuneraçãototal”。在文件中找到该文本行的第二个匹配项后,我应该在此关键行的前后读取并打印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)  

A 乙 C d Ë F G

如果我的密钥是“ D”,并且前后的行数范围是2,则应该返回给我:

B C d Ë F

2 个答案:

答案 0 :(得分:1)

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

例如:

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)

答案 1 :(得分:1)

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()返回空列表。