Python按指定规则拆分字符串列表并保留原有顺序的方法
Python字符串列表按规则拆分实现
- 遍历原列表时严格保留元素原有先后顺序,不做额外重排
- 仅对列表原始元素做一次拆分判定,拆分生成的新子串不会重复进入校验流程
- 拆分判定逻辑:
- 字符串中不存在
:时,直接保留原串 - 找到字符串中第一个
:后,跳过后续连续的空白字符(空格、换行、制表符等),如果后续无有效非空白内容(即:后全为空白),保留原串不拆分 - 如果跳过
:后连续空白仍有有效内容,则在第一个:位置拆分,前半段为包含:在内的前缀,后半段为:后跳过前导空白的全部剩余内容
- 字符串中不存在
实现代码
def split_str_list(input_list): result = [] for s in input_list: colon_idx = s.find(':') # 字符串无冒号,直接保留 if colon_idx == -1: result.append(s) continue # 定位冒号后第一个非空白字符的位置 content_start = colon_idx + 1 s_length = len(s) while content_start < s_length and s[content_start].isspace(): content_start += 1 # 冒号后全为空白字符,不拆分 if content_start == s_length: result.append(s) continue # 按规则拆分,子串不再做二次校验 left = s[:colon_idx + 1] right = s[content_start:] result.append(left) result.append(right) return result
效果验证
- 测试场景1
输入:['example: Test', 'example: ', 'IGNORE_ME_EXAMPLE']
执行函数返回结果:['example:', 'Test', 'example: ', 'IGNORE_ME_EXAMPLE'],与预期输出完全一致。 - 测试场景2
输入:['example: Test::YES']
执行函数返回结果:['example:', 'Test::YES'],仅在首个冒号位置完成拆分,不会对子串中后续的冒号做重复处理,符合要求。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

