如何在此程序中获得具有最高值的前3个字符串?

时间:2018-06-01 02:30:14

标签: python

我有一个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

任何帮助都将不胜感激。

1 个答案:

答案 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