1

这个希望很简单,我有一个字符串"voltage is E=200V and the current is I=4.5A"。我需要提取两个浮点值。我尝试使用 float() 函数(参数中的子字符串为 11 到 16),但出现错误。我意识到这可能不是好的编码,我正处于尝试学习 Python 的开始阶段。任何帮助深表感谢。

编辑:这是代码

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

再说一次,我不熟悉这种语言,我知道这看起来很难看。

4

1 回答 1

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
于 2012-04-07T22:50:25.483 回答