Python 如何批量切割列表内的字符串以截取指定中间片段
批量截取列表内字符串指定片段的实现方法
Python中字符串是可切片的序列类型,要对列表内所有字符串做批量截取,最简洁高效的写法是结合列表推导式完成元素遍历与切片操作,不需要额外引入第三方工具。
切片规则匹配
对照目标输出逐个核对原字符串的字符索引位置,可以确认所有元素的截取规则完全统一:
- 对
"mathematics"截取得到"thema",对应起始索引2、结束索引7(遵循左闭右开规则,实际取索引2到6的连续5个字符) - 对
"sciences"截取得到"ience",同样对应起始索引2、结束索引7 - 对
"historical"截取得到"stori",也对应起始索引2、结束索引7
最简实现代码
直接通过列表推导式遍历原列表,对每个字符串执行[2:7]的切片操作即可:
list1 = ["mathematics", "sciences", "historical"] output_list = [item[2:7] for item in list1]
执行后得到的output_list完全匹配目标要求:["thema", "ience", "stori"]
扩展性写法
如果后续遇到不同字符串需要按不同位置截取的场景,可以提前把每个元素对应的切片范围整理成配对列表,通过zip同步遍历原列表和切片规则,代码可维护性更强:
list1 = ["mathematics", "sciences", "historical"] # 按列表顺序对应每个元素的(切片起始索引, 切片结束索引) slice_rules = [(2, 7), (2, 7), (2, 7)] output_list = [s[start:end] for s, (start, end) in zip(list1, slice_rules)]
注意:Python字符串切片遵循左闭右开的规则,即
[start:end]不会包含end索引位置的字符,计算截取位置时需要留意边界值,避免截多或截少。
内容的提问来源于stack exchange,提问作者mmmmmmmmmmm
相关产品推荐
相关产品推荐

