You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何合并两个正则模式实现全场景百分比数值提取?

解决方案

合并后正则及代码

直接使用如下正则即可覆盖所有测试场景,适配pandas的str.extract用法:

# 通用版本,保留原小数位数
merged_pattern = r'(?:^|[^\d])(0*(?:100|[1-9]?\d)?(?:\.\d+)?)%*[^%]*$'

# 若需要强制最多保留2位小数,替换为以下正则
# merged_pattern = r'(?:^|[^\d])(0*(?:100|[1-9]?\d)?(?:\.\d{1,2})?)%*[^%]*$'

df['var'] = df['var'].astype(str).str.extract(merged_pattern)[0]

正则逻辑说明

  • 定位规则:自动忽略数值前后的特殊字符(*、@、#等)、序号、空格、说明文本、任意数量的连续%符号
  • 数值范围:仅匹配0-100区间的数值,超出范围的数值(如19348952)返回空值
  • 格式适配:支持整数、小数、无整数部分的小数(如.85%)三类写法,前导0保留规则符合预期:
    • 全0字符串保留所有0(000→000)
    • 非全0数值自动去除无效前导0(021→21)

内容的提问来源于stack exchange,提问作者non_linear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:36:02