0

我有一个长文本,想要匹配所有出现的“比率为 (\d+\.\d)%”,但只想将组 (\d+\.d) 作为匹配字符串列表返回。我怎样才能做到这一点?

我不能只匹配该组,因为它也发生在其他上下文中。

例子

"I like how the rate is 6.7%. Now the rate is 11.4% profits were down by 5.6%"

在这种情况下,我需要

[6.7, 11.4]

我明白了,我认为 findall 返回匹配的整个字符串,而不是组。谢谢你的澄清。

4

3 回答 3

1

当然可以,只需将要返回的部分分组:

r'the rate is (\d+\.d)%'

因此,请提供足够的上下文以仅匹配您想要返回的内容,并使用捕获组。然后使用该.findall()方法,该方法将仅包含匹配的捕获组:

>>> re.findall(r'the rate is (\d+\.\d)%', "I like how the rate is 6.7%. Now the rate is 11.4% profits were down by 5.6%")
['6.7', '11.4']
于 2013-02-23T13:08:37.203 回答
1
In [94]: s="I like how the rate is 6.7%. Now the rate is 11.4% profits were down
 by 5.6%"

In [95]: re.findall(r'the rate is (\d+\.\d)%', s)
Out[95]: ['6.7', '11.4']
于 2013-02-23T13:08:53.853 回答
-1

这可以使用re.findall().

7.2。re - 正则表达式操作

于 2013-02-23T13:15:42.457 回答