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

如何用Python正则表达式清理带连字符的价格范围字符串?

问题场景

需要清理价格范围字符串 'GBP 10,000,000 – GBP 15,000,000',要求用Python正则表达式移除货币标识GBP,将连字符替换为逗号,最终输出格式为 (10000000,15000000)。

原尝试方案 re.sub('[GBP,/s-]','', text) 存在问题,输出为 ' 10000000 – 15000000',未完成空格清理和连字符替换。

解决方案

方案1:分步正则处理+格式组装

import re

text = 'GBP 10,000,000 – GBP 15,000,000'
# 清理GBP、逗号,将长破折号/短横替换为空白,再去除首尾空格
cleaned_text = re.sub(r'GBP|,|–|-', '', text).strip()
# 分割出两个数字字符串
num_strs = cleaned_text.split()
# 格式化为目标元组格式
result = f"({int(num_strs[0])},{int(num_strs[1])})"
print(result)  # 输出 (10000000,15000000)

方案2:直接提取数字核心内容

import re

text = 'GBP 10,000,000 – GBP 15,000,000'
# 匹配带逗号的数字格式,再移除逗号得到纯数字字符串
num_list = [re.sub(',', '', match) for match in re.findall(r'\d{1,3}(?:,\d{3})+', text)]
# 拼接成目标格式
result = f"({num_list[0]},{num_list[1]})"
print(result)
原方案问题分析
  1. 正则中的/s是错误写法,正确空白字符标识应为\s
  2. 原字符串中的连字符是长破折号–,不是普通短横-,原正则未匹配到该字符
  3. 仅移除指定字符未处理剩余空格,导致输出残留空白

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:40:18