Python3如何按指定列表元素定位后分割目标字符串?
Python3 实现指定字符串分割需求的最优方案
给定字符串:
s = "DH3580-Fr1-TRG-TRB-DH1234-Fr3"
匹配列表:
l = ['Fr1', 'TRG', 'TRB', 'SOUL']
需求说明
- 跳过第一个
-之前的前缀(即DH3580),从剩余部分开始扫描字符串 - 找到列表
l中存在的最后一个元素(此示例中为TRB) - 在该元素之后紧邻的
-处分割原字符串,最终得到结果:
['DH3580-Fr1-TRG-TRB', 'DH1234-Fr3']
最优实现方法
通过分割字符串、定位目标元素位置、拼接结果的方式实现,逻辑清晰且效率较高:
s = "DH3580-Fr1-TRG-TRB-DH1234-Fr3" l = ['Fr1', 'TRG', 'TRB', 'SOUL'] # 将字符串按'-'分割为片段数组 parts = s.split('-') # 从索引1开始遍历(跳过第一个前缀),收集所有属于列表l的元素索引 match_indices = [i for i, part in enumerate(parts) if part in l and i > 0] # 取最后一个匹配元素的索引 last_match_idx = match_indices[-1] # 拼接前后两部分得到结果 result = [ '-'.join(parts[:last_match_idx+1]), '-'.join(parts[last_match_idx+1:]) ] print(result) # 输出: ['DH3580-Fr1-TRG-TRB', 'DH1234-Fr3']
代码说明
- 先分割字符串为数组,便于逐个检查片段
- 遍历过程跳过第一个前缀元素,只收集符合匹配列表的元素索引
- 以最后一个匹配元素的索引为分界点,分别拼接前后片段,得到目标结果
相关JavaScript问题参考
问题:如何获取分割字符串数组的最后一个元素?
内容的提问来源于stack exchange,提问作者BCArg
相关产品推荐
相关产品推荐

