2

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

我有一个字符串:

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

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

有没有一种简单的方法可以让我这样做?在我看来,它看起来像这样:

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

在哪里:

*: Any char

_: float number, maybe with variable lenght

(对不起,我的英语很糟糕,有没有正则表达式的德语手册?)

问候

4

4 回答 4

6

xpos如果您的orypos是否定的,这将起作用:

x, y = map(float, re.findall(r'[+-]?[0-9.]+', str))
于 2013-08-11T22:29:56.957 回答
3

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

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

演示

于 2013-08-11T22:26:30.390 回答
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]
于 2013-08-11T22:26:01.277 回答
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)
于 2013-08-11T22:29:05.140 回答