我有一个python程序,我打印像
这样的字符串@SP_YSNSB id=0
0054 log out
@SP_23RTY id=0
0387 pop
@TRIO_9078 id=0
0098 hench
@TRE_4657838.c id=0
0056 pop
@WRYE_LKP.CO id=0
0078 ffg
" @ SP_23RTY"是标题和" 0387 pop"是在它循环之前执行的行数。
如何打印前3个最高行数的前三个标题?
输出应为
@SP_23RTY id=0
0387 pop
@TRIO_9078 id=0
0098 hench
@WRYE_LKP.CO id=0
0078 ffg
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以使用re
:
import re
lines = list(filter(None, content.split('\n')))
grouped = [[lines[i], lines[i+1]] for i in range(0, len(lines), 2)]
new_grouped = sorted(grouped, key=lambda x:int(re.findall('\d+', x[-1])[0]), reverse=True)[:3]
for a, b in new_grouped:
print(f'{a}\n{b}')
输出:
@SP_23RTY id=0
0387 pop
@TRIO_9078 id=0
0098 hench
@WRYE_LKP.CO id=0
0078 ffg