如何在Python中使用Regex提取字符串中的唯一数值(含小数、连字符)
提取唯一数字、小数及连字符的解决方案
你的问题核心是原正则仅过滤非目标字符,但无法处理重复值。要得到唯一的数字范围,可通过提取目标片段→去重→整理格式三步实现:
方法思路
- 先提取所有整数、小数片段;
- 对提取结果去重,剔除重复值;
- 将去重后的数字按顺序拼接成期望的范围格式。
完整代码实现
import re check = "Desirable: < 200 Borderline HIgh: 200 - 240 High: > 240" # 提取所有整数/小数(支持带小数点的数值) nums = re.findall(r'\d+\.?\d*', check) # 转成浮点数去重,再按数值大小排序 unique_nums = sorted(list(set(map(float, nums)))) # 格式转换:整数转为无小数点的字符串,小数保留原格式 unique_nums_str = [] for num in unique_nums: if num.is_integer(): unique_nums_str.append(str(int(num))) else: unique_nums_str.append(str(num)) # 拼接成最终结果 result = '-'.join(unique_nums_str) print(result) # 输出:200-240
适配小数场景测试
如果输入字符串包含小数,比如:
check = "Desirable: < 199.5 Borderline HIgh: 199.5 - 240.5 High: > 240.5"
运行代码后会输出:199.5-240.5,完全符合需求。
内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

