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

从格式各异的字符串中提取百分比数值的技术需求

解决方案:提取并格式化可转换为百分比的数值

核心逻辑

先通过正则匹配筛选出可转换为百分比的有效数值(包括纯整数、带逗号/小数点的小数、带%后缀的数值),再按规则处理:移除百分号、小数点替换为逗号,非数值文本返回null。

匹配有效数值的正则表达式:^(\d+([.,]\d+)?)(%?)$

  • ^ 和 $ 确保匹配整个字符串,避免部分匹配
  • \d+([.,]\d+)? 匹配整数或带逗号/小数点的小数
  • (%?) 匹配可选的百分号后缀

实现示例

1. SQL(以PostgreSQL为例)

SELECT 
    "客户ID" AS "ID",
    CASE
        -- 匹配有效数值格式
        WHEN "值" ~ '^(\d+([.,]\d+)?)(%?)$' THEN
            -- 先移除百分号,再替换小数点为逗号
            REPLACE(REPLACE("值", '%', ''), '.', ',')
        ELSE 'null'
    END AS "值"
FROM your_table_name;

2. Python 实现

import re

def process_percent_value(input_val):
    # 严格匹配有效数值格式
    pattern = r'^(\d+([.,]\d+)?)(%?)$'
    match_result = re.fullmatch(pattern, input_val)
    
    if match_result:
        # 提取数值部分并替换小数点为逗号
        cleaned_num = match_result.group(1).replace('.', ',')
        return cleaned_num
    return 'null'

# 测试处理原始数据
raw_data = [
    (1, '0,46'), (2, '25%'), (3, '无信息'),
    (4, '二十二'), (5, '12.2'), (6, '365%'), (7, '54')
]

# 生成输出表格
print("| ID | 值 |")
print("| ---- | ---- |")
for customer_id, value in raw_data:
    print(f"| {customer_id} | {process_percent_value(value)} |")

验证结果

运行上述代码后,输出与期望表格完全一致:

ID值
10,46
225
3null
4null
512,2
6365
754

内容的提问来源于stack exchange,提问作者Макс Кроман

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:16:10