如何通过正则高效移除字符串列表中的版本号 无需手动遍历列表项
实现方案
核心逻辑是通过正则精准匹配所有符合「多段整数+点号」特征的版本号,配合预编译正则+列表推导完成批量处理,不需要手动写逐行检查的显式for循环,处理效率很高。
- 版本号匹配正则:
\s*\b\d+(?:\.\d+)+\b\s*- 可以匹配字符串任意位置的版本号,不管是在末尾、中间还是开头
- 正则前后的
\s*会同步匹配版本号前后的多余空格,避免替换后残留连续空格
- 提前用
re.compile预编译正则表达式,大批量处理数据时性能更好
完整代码示例
import re # 原始待处理列表 raw_list = [ 'Adobe PDF Library 9.9', 'Adobe PDF Library 8.0', 'Adobe PDF Library 15.0', 'Adobe PDF Library 11.0', 'Mac OS X 10.13.3 Quartz PDFContext' ] # 预编译版本号匹配规则 version_re = re.compile(r'\s*\b\d+(?:\.\d+)+\b\s*') # 批量替换清理,无手动逐行检查逻辑 clean_list = [version_re.sub(' ', item).strip() for item in raw_list]
处理结果
运行后clean_list的输出如下,所有版本号被移除,仅保留程序名称:
[ 'Adobe PDF Library', 'Adobe PDF Library', 'Adobe PDF Library', 'Adobe PDF Library', 'Mac OS X Quartz PDFContext' ]
适配调整
如果你的数据里存在带v前缀的版本号(比如v10.2.1),只需要把正则规则调整为\s*\bv?\d+(?:\.\d+)+\b\s*即可兼容。
内容的提问来源于stack exchange,提问作者dovod74538
相关产品推荐
相关产品推荐

