如何在Python程序中输出执行行数最高的前3个头部字符串?
解决方法:提取执行行数最高的前3个头部内容
没问题,我来帮你搞定这个需求!我们可以通过几个清晰的步骤来实现你要的功能,下面是具体的思路和代码:
步骤拆解
- 拆分条目:首先把输入字符串里每个以
@开头的独立条目提取出来 - 提取并转换行数:从每个条目中取出代表执行行数的四位数字,转成整数以便正确排序
- 排序取前3:按行数从高到低排序后,取前3个条目拼接成最终输出
完整代码实现
import re # 替换成你的输入字符串 input_str = "@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" # 1. 提取所有@开头的完整条目 # 正则表达式匹配:以@开头,直到下一个@或者字符串结尾的内容 entries = re.findall(r'@\S+?\s.*?(?=@|$)', input_str) # 2. 按执行行数降序排序 # 每个条目按空格拆分后,第3个元素(索引2)是执行行数,转成整数后取负值实现降序 sorted_entries = sorted(entries, key=lambda item: -int(item.split()[2])) # 3. 取前3个条目并拼接成结果字符串 top_3_result = ' '.join(sorted_entries[:3]) # 输出最终结果 print(top_3_result)
代码说明
- 正则提取条目:用
re.findall可以精准捕获每个以@开头的完整内容,避免手动拆分时的边界问题 - 排序逻辑:把行数转成整数后取负值,这样
sorted默认的升序排序就会等价于按行数降序排列,简单直观 - 结果拼接:用
' '.join()把前3个条目合并成你需要的格式
运行这段代码后,输出结果正好是你期望的:
@SP_23RTY id=0 0387 pop @TRIO_9078 id=0 0098 hench @WRYE_LKP.CO id=0 0078 ffg
内容的提问来源于stack exchange,提问作者Claire Louise Sajol
相关产品推荐
相关产品推荐

