Python如何从指定字符串提取SW A_done与SW B_done的浮点数值?
提取指定标识对应数值的实用方法
方案1:正则表达式(最稳妥)
直接用正则匹配SW A_done:和SW B_done:后面的数值,不管中间夹了多少空格,都能精准抓出来:
import re line = "SW A_done: 191168 SW B_done: 27720" # 匹配SW A_done后的数值,支持整数和小数 a_done = float(re.search(r'SW A_done:\s+(\d+\.?\d*)', line).group(1)) # 匹配SW B_done后的数值 b_done = float(re.search(r'SW B_done:\s+(\d+\.?\d*)', line).group(1)) print(a_done, b_done) # 输出:191168.0 27720.0
如果确定数值都是整数,把\d+\.?\d*换成\d+也可以。
方案2:按关键字分割(无需额外模块)
先把字符串按SW A_done:切开,取后半部分再用split()自动过滤所有空值,拿第一个元素就是目标数值;同理处理SW B_done::
line = "SW A_done: 191168 SW B_done: 27720" # 提取SW A_done对应的数值 a_part = line.split('SW A_done:')[1].split() a_done = float(a_part[0]) # 提取SW B_done对应的数值 b_part = line.split('SW B_done:')[1].split() b_done = float(b_part[0]) print(a_done, b_done)
这种方法不用导入库,逻辑直白,哪怕数值是0也能正常提取,不会被空值干扰。
内容的提问来源于stack exchange,提问作者user3555115
相关产品推荐
相关产品推荐

