Python中如何高效提取列表内字符串下划线前的内容?
Python提取列表字符串下划线前部分的高效方法
这里有几种实用且高效的方法,根据你的场景选择:
列表推导式 + split(最常用)
这是Python中最直观且高效的方式,适合大多数常规场景:str_list = ["AAA_X", "BBB_X", "CCC_X"] result = [s.split('_')[0] for s in str_list] # 输出: ['AAA', 'BBB', 'CCC']split('_')会将字符串按下划线分割成列表,取索引为0的元素就是下划线前的部分。map + lambda(简洁写法)
如果你偏好函数式风格,map结合lambda也能实现,内存效率略优(尤其处理超大列表时):str_list = ["AAA_X", "BBB_X", "CCC_X"] result = list(map(lambda s: s.split('_')[0], str_list))兼容无下划线的场景
如果列表中存在不含下划线的字符串,可加入判断避免索引错误:str_list = ["AAA_X", "BBB", "CCC_X"] result = [s.split('_')[0] if '_' in s else s for s in str_list] # 输出: ['AAA', 'BBB', 'CCC']正则表达式(复杂场景适用)
若需要处理多个下划线的情况(仅提取第一个下划线前的内容),正则表达式更灵活,预编译正则还能提升多次匹配的效率:import re str_list = ["AAA_X_YY", "BBB_X", "CCC_X"] pattern = re.compile(r'^[^_]+') # 预编译正则 result = [pattern.match(s).group() for s in str_list] # 输出: ['AAA', 'BBB', 'CCC']
内容的提问来源于stack exchange,提问作者jo_
相关产品推荐
相关产品推荐

