如何提取 .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 空列表。
在一个文本文件中,我有一个关键文本 "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 空列表。