在s字符串中查找浮点数 - Python

时间:2012-04-07 22:36:56

标签: python string floating-point

这个希望很简单,我有一个字符串“电压是E = 200V,电流是I = 4.5A”。我需要提取两个浮点值。我试图使用float()函数(在参数中有一个11到16的子字符串),但是我得到一个错误。我意识到这可能不是很好的编码,我正处于尝试学习Python的开始阶段。非常感谢任何帮助。

编辑:这是代码

I = 0.0     
if((currentString.find('I=')) != -1):
            I = float(currentString[(currentString.find('I=')):(currentString.find('A'))])

再次,我是这种语言的新手,我知道这看起来很难看。

1 个答案:

答案 0 :(得分:2)

我不愿提及正则表达式,因为它通常是新手的混乱工具,但是对于您的使用和参考,这里有一个片段可以帮助您获得这些值。 IIRC电压不太可能是浮点数(而不是int?),所以这个匹配操作稍后返回int,但如果确实需要则可以浮动。

>>> import re
>>> regex = re.compile(r'.*?E=([\d.]+).*?I=([\d.]+)')
>>> re.match('voltage is E=200V and the current is I=4.5A')
>>> matches = regex.match('voltage is E=200V and the current is I=4.5A')
>>> int(matches.group(1))
200
>>> float(matches.group(2))
4.5

使用更简单的工具提取此类数字的方法是:

>>> s.find('E=')
11
>>> s.find('V', 11)
16
>>> s[11:16]
'E=200'
>>> s[11+2:16]
'200'
>>> int(s[11+2:16])
200