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

Python如何从目标字符串中提取所有非零数值?

解决方案

方法1:字符串分割过滤

这种方法简单直接,利用\0作为分隔符拆分字符串,再过滤掉空值和零值:

以Python为例:

s = '\0\0.412583\0.4415169\0.4140446\0.3750735\0\0.4128125\0\0'
# 按空字符\0分割字符串
parts = s.split('\0')
# 过滤掉空字符串和值为'0'的项,再转换为浮点数
non_zero_values = [float(item) for item in parts if item and item != '0']
print(non_zero_values)

输出结果:

[0.412583, 0.4415169, 0.4140446, 0.3750735, 0.4128125]

方法2:正则表达式匹配

如果一定要用正则,可直接匹配所有带小数点的数值(示例中非零值均为小数格式):

import re

s = '\0\0.412583\0.4415169\0.4140446\0.3750735\0\0.4128125\0\0'
# 匹配所有形如「数字.数字」的字符串
pattern = r'\d+\.\d+'
matches = re.findall(pattern, s)
# 转换为浮点数
non_zero_values = [float(match) for match in matches]
print(non_zero_values)

输出结果与方法1一致。

正则失败的常见原因

如果之前正则匹配失败,大概率是没针对场景调整模式:比如误包含零值匹配,或没考虑\0分隔符的影响。如果场景中存在整数形式的非零值(如\0\5\0),可以调整正则并过滤零值:

matches = re.findall(r'\d+\.?\d*', s)
non_zero_values = [float(m) for m in matches if float(m) != 0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:46:01