匹配一行中的字符并打印python之前的行
Match characters in a line and print the line before python
我有一个日志文件,这个文件是这样的:
line1 input
line2 output
line3 input
line4 output
and so on...
根据输出,我想将输入和输出都提取到一个新文件中..
作为示例代码,我使用了 print 和 .startswith 方法,这对我来说很好,因为我只对如何将当前行和它之前的行拉到文件中感兴趣。
这是我的做法:
file = 'path_to_file'
index_list = []
line_list = []
with open(file) as f:
for index, line in enumerate(f):
line_list.append(line)
if line.startswith('b'):
index_list.append(index)
for index in index_list:
print line_list[index-1], line_list[index]
这段代码工作得很好,但我想知道是否有更 pythonic 的方式来做到这一点,节省内存。
提前致谢。
BR
使用以下代码获取列表中文件的行。然后您可以轻松检索该行和上一行。另外我建议不要在 REPL 中 运行 这个,因为大日志文件可能会减慢 python REPL。
with open(fileName) as file:
content = file.readlines()
希望对您有所帮助。
没有在内存中存储超过两行:
from itertools import izip
with open('test.log') as lines:
for input_line, output_line in izip(lines):
if output_line.startswith('b'):
print input_line
print output_line
将其放入一个函数中,并将 print
替换为 yield
,您可以将 file.writelines()
与该函数一起使用,以编写匹配的 input/output 对。
我有一个日志文件,这个文件是这样的:
line1 input
line2 output
line3 input
line4 output
and so on...
根据输出,我想将输入和输出都提取到一个新文件中..
作为示例代码,我使用了 print 和 .startswith 方法,这对我来说很好,因为我只对如何将当前行和它之前的行拉到文件中感兴趣。
这是我的做法:
file = 'path_to_file'
index_list = []
line_list = []
with open(file) as f:
for index, line in enumerate(f):
line_list.append(line)
if line.startswith('b'):
index_list.append(index)
for index in index_list:
print line_list[index-1], line_list[index]
这段代码工作得很好,但我想知道是否有更 pythonic 的方式来做到这一点,节省内存。
提前致谢。
BR
使用以下代码获取列表中文件的行。然后您可以轻松检索该行和上一行。另外我建议不要在 REPL 中 运行 这个,因为大日志文件可能会减慢 python REPL。
with open(fileName) as file:
content = file.readlines()
希望对您有所帮助。
没有在内存中存储超过两行:
from itertools import izip
with open('test.log') as lines:
for input_line, output_line in izip(lines):
if output_line.startswith('b'):
print input_line
print output_line
将其放入一个函数中,并将 print
替换为 yield
,您可以将 file.writelines()
与该函数一起使用,以编写匹配的 input/output 对。