Python中如何匹配列表指定序列并提取其后固定长度的元素
列表指定片段提取实现方案
实现逻辑
- 先定义需要匹配的固定前缀序列
['00', '13', 'A2', '00'] - 遍历原始列表的所有有效起始位置,校验当前位置开始的连续元素是否和前缀完全匹配
- 匹配成功后,从前缀结束位置的下一位开始,截取连续4个元素即为目标结果
可运行代码
# 原始输入列表 raw_list = ['7E', '00', '10', '97', '9A', '00', '13', 'A2', '00', '41', 'B6', '13', '58', 'FF', 'FE', '41', '50', '00', '01', '28'] # 固定匹配前缀 match_prefix = ['00', '13', 'A2', '00'] prefix_length = len(match_prefix) target_result = None # 遍历所有可能的前缀起始索引,保证后续有足够长度取4个结果元素 for start_idx in range(len(raw_list) - prefix_length - 3): if raw_list[start_idx:start_idx+prefix_length] == match_prefix: # 从前缀结束的下一位开始截取4个元素 target_result = raw_list[start_idx+prefix_length : start_idx+prefix_length+4] # 若需匹配所有出现的前缀序列,可删除下一行break,用列表收集所有结果 break print(target_result) # 运行输出:['41', 'B6', '13', '58'] # 如需得到空格分隔的字符串格式结果,可使用以下代码 # print(' '.join(target_result)) # 输出:41 B6 13 58
补充说明
如果业务场景中可能出现多段匹配的前缀序列,删除代码中的break,初始化空列表存储所有匹配到的结果即可。
内容的提问来源于stack exchange,提问作者S Andrew
相关产品推荐
相关产品推荐

