使用正则表达式从String中提取浮点数

时间:2013-08-11 22:21:42

标签: python regex string

我是python的真正初学者,但我听说在字符串操作中应该很容易。你能告诉我怎么做:

我有一个字符串:

str = "[someString xpos=1024.0 ypos=768.0 someotherString]"

我想从该字符串中提取两个浮点数,以便我不能将它们用作函数的参数。

我可以这样轻松地做到这一点吗? 在我看来,它看起来像这样:

*xpos=____.__*ypos=____.___*

其中:

*: Any char

_: float number, maybe with variable lenght

(对不起,我的英语非常糟糕,是否有正式表达的德语手册?)

问候

4 个答案:

答案 0 :(得分:6)

如果您的xposypos为否定,则可以使用此方法:

x, y = map(float, re.findall(r'[+-]?[0-9.]+', str))

答案 1 :(得分:3)

这是一个简单的正则表达式,用于查找浮点数。

/[-+]?[0-9]*\.?[0-9]+/

Demo

答案 2 :(得分:1)

>>> import re
>>> s = "[someString xpos=1024.0 ypos=768.0 someotherString]"
>>> results = re.findall('pos=([\d.]+)', s)
>>> results
['1024.0', '768.0']
>>> map(float, results)
[1024.0, 768.0]

答案 3 :(得分:0)

您可以使用re模块。

import re

matchobject = re.search(string, "[.+xpos=(.+)\sypos=(.+)\s.+]")
xpos = matchobject.group(1)
ypos = matchobject.group(2)

此处'。+'表示任何可变长度的字符集,直到您达到指定的下一个模式。括号用于对xpos和ypos值进行分组,以便稍后提取它们。

它会将xpos和ypos作为字符串返回,您可以转换为float或int。

xpos = int(xpos)
ypos = float(ypos)