Python中移除字符串的下划线及数字前导零的高效方法
Python处理ABC_###格式字符串的高效方法
这里有两种高效且简洁的实现方式,完全满足你的需求:
方法一:分割+类型转换
利用字符串分割和整数自动去前导零的特性,代码简洁且高效:
# 示例输入列表 str_list = ["ABC_004", "XYZ_090", "LMN_909", "PQR_012"] # 列表推导式批量处理 processed_list = [f"{prefix} {int(num_part)}" for prefix, num_part in (s.split('_') for s in str_list)]
运行后processed_list的结果就是['ABC 4', 'XYZ 90', 'LMN 909', 'PQR 12']。
原理很简单:split('_')把字符串拆成前缀和带前导零的数字部分,int(num_part)会自动去掉前导零,再用f-string拼接成空格分隔的格式。这种方法不需要额外导入模块,内置操作的效率很高。
方法二:正则表达式替换
如果需要更灵活的匹配(比如后续格式有小调整),可以用预编译的正则表达式批量替换:
import re # 预编译正则,匹配前缀、下划线、任意数量前导零+有效数字 pattern = re.compile(r'^(.*)_0*(\d+)$') str_list = ["ABC_004", "XYZ_090", "LMN_909", "PQR_012"] processed_list = [pattern.sub(r'\1 \2', s) for s in str_list]
正则里(.*)匹配前缀部分,_0*(\d+)匹配下划线、任意个前导零和后面的有效数字,替换时把这两部分用空格拼接即可。预编译正则后处理大量字符串时效率会更高。
两种方法都能快速处理你的需求,根据自己的习惯选就行。
内容的提问来源于stack exchange,提问作者yuuuu
相关产品推荐
相关产品推荐

