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

Python正则匹配:提取空格/连字符后的数值,排除num后单个数字

解决方法

方法一:使用正则表达式直接捕获目标数值

原代码的问题在于将每行转为列表字符串后,误匹配了num后的序号数字。可以通过调整正则表达式,精准捕获连字符(含前后可选空格)后的小数数值:

import re

text = str('''\
num1 - 1.23
num2-3.21
num3 - 9.31\
''')

# 匹配'-'后(可跟任意空格)的小数,捕获组提取数值
result = re.findall(r'-[\s]*(\d+\.\d+)', text)
print(result)  # 输出: ['1.23', '3.21', '9.31']

正则说明:

  • -:匹配连字符
  • [\s]*:匹配0个或多个空格(兼容num后带空格/不带空格的情况)
  • (\d+\.\d+):捕获小数格式的数值(至少1位整数+小数点+至少1位小数)
  • re.findall会自动返回所有捕获组的内容,正好得到目标列表

方法二:逐行分割处理(无需正则)

如果不想用正则,可以直接按行分割文本,通过字符串操作提取目标数值:

text = str('''\
num1 - 1.23
num2-3.21
num3 - 9.31\
''')

result = []
for line in text.split('\n'):
    if line:  # 跳过分割后产生的空行
        # 按'-'分割取后半段,去除前后空格后加入结果
        target_num = line.split('-')[-1].strip()
        result.append(target_num)
print(result)  # 输出: ['1.23', '3.21', '9.31']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:00:47