2017-08-22 91 views
0

我的路線是:發現出現次數

line = "aaaaaaaaaaaaaaxxxxxxxxxxxxxxbbbbbbbbbbbbxxxxxxxxxxxxxxxxxxxbbbbbbbbbbb" 

我怎樣才能找到line「XXXXX」的補丁的數量?例如,上面的答案是2

請注意,'x's的數量可能會有所不同。

+0

你試過了什麼? – Harsha

+0

我試過s.find('x')和s.rfind('x'),但它不會給我想要的結果 – ana

+0

至少有3個x是 – ana

回答

1

您可以使用groupby到組的每個「補丁」再算上出現的次數:

from itertools import groupby 

line = 'aaaaaaaaaaaaaaxxxxxxxxxxxxxxbbbbbbbbbbbbxxxxxxxxxxxxxxxxxxxbbbbbbbbbbb' 
number_of_x = sum(ch == 'x' for ch, _ in groupby(line)) 
+0

那真的很漂亮! –

+0

謝謝喬納斯。它完美的作品。我想知道我什麼時候能夠編寫這樣的代碼。 – ana

3

這是哪裏的正則表達式是非常有用的一個很好的例子。我不是世界上最好的正則表達式時,但在這裏是一個可行的片段:

import re 

line = "aaaaaaaaaaaaaaxxxxxxxxxxxxxxbbbbbbbbbbbbxxxxxxxxxxxxxxxxxxxbbbbbbbbbbb" 
patches = len(re.findall(r"(x+)", line)) 

該作品以「X」不管有多長匹配1或以上的團體。

+0

這是另一種一線解決方案。 Thanx – ana

+0

我怎樣才能得到每個這樣的補丁的開始和結束索引? – ana

+0

[這裏是](https://stackoverflow.com/questions/3519565/find-the-indexes-of-all-regex-matches-in-python)一個問題,你正在尋找什麼! – bendl