需求:移除列表元素中数字及数字后内容的通用Python解决方案
问题描述
现有列表:
List=['hello-67.33-yo', 'bye-67-27.34-jk', 'hi56']
当前实现代码:
g = "".join(List) S = g.split('-67')[:-1]
预期输出:
['hello','bye', 'hi']
当前逻辑仅能正确处理列表中的2个元素,现寻求可处理所有元素的通用方案,需移除每个元素里的数字及数字之后的所有内容。
通用解决方案
可以用正则表达式对列表内每个元素单独处理,精准提取数字出现前的文本内容:
import re original_list = ['hello-67.33-yo', 'bye-67-27.34-jk', 'hi56'] result = [re.match(r'^\D+', item).group() for item in original_list] print(result)
代码说明
re.match(r'^\D+', item):匹配每个字符串开头的所有非数字字符(\D代表非数字,^限定匹配范围从字符串开头开始).group():提取匹配到的有效内容- 列表推导式遍历原列表,完成批量处理
运行后输出:
['hello', 'bye', 'hi']
如果存在开头就是数字的元素(示例未包含这类情况),可以添加判断避免报错:
import re original_list = ['hello-67.33-yo', 'bye-67-27.34-jk', 'hi56', '123test'] result = [] for item in original_list: match = re.match(r'^\D+', item) result.append(match.group() if match else '') print(result)
输出:
['hello', 'bye', 'hi', '']
内容的提问来源于stack exchange,提问作者Parshant Sharma
相关产品推荐
相关产品推荐

