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 に答える