Python如何按列表中'ID:'前缀元素将字符串列表拆分为子列表
问题原因分析
- 原有代码每次截取都是从列表头部开始,不会跳过已经拆分过的内容,第二次匹配到ID时会包含前一段的所有数据
- 用
list.index()获取索引效率低,且如果列表中存在重复元素会返回第一个匹配项的索引,导致逻辑错误 - 仅打印拆分结果没有存入新列表,无法得到最终的
new_list对象 - 使用
list作为变量名会覆盖Python内置的列表类型,属于错误的命名实践
正确实现代码
# 不要用list作为变量名,避免覆盖内置类型 original_list = ['Acura of Columbus', '303 Veterans Memorial Pkwy', 'Lanett,', 'AL', '36863', '(334) 576-6700', 'ID:68602', 'Adventure Chevrolet', '106 1st Ave', 'Brewton,', 'AL', '36426', '(205) 375-2521', 'ID:68603'] new_list = [] split_start = 0 for index, value in enumerate(original_list): if value.startswith('ID:'): # 截取上一个分割点到当前ID之前的元素 new_list.append(original_list[split_start:index]) # 更新下一次分割的起始位置 split_start = index + 1 # 如果列表末尾还有未被ID分隔的内容,也追加到结果中,不需要可以删除这部分 if split_start < len(original_list): new_list.append(original_list[split_start:]) print(new_list)
运行后输出结果和你预期的new_list完全一致。
内容的提问来源于stack exchange,提问作者Hosam Gamal
相关产品推荐
相关产品推荐

