Просканируйте скользящее окно, чтобы найти определенную комбинацию букв в строке. Подсчет вхождений. питон - PullRequest
0 голосов
/ 15 декабря 2011

Если у вас есть последовательность, и вы создаете список размером окна 4. В каждом из этих окон вы ищете определенное расположение.

#Example:
count=0
test='abcdaecdagcd'
windows=['abcd','bcda','cdae','daec','aecd','ecda','cdag','dagc','agcd']

Я ищу определенный мотив, который a- [b или e] - * - d в последовательности, и я хочу посчитать, сколько раз это происходит

так что 'abcd' и 'aecd' будут работать, потому что 'a- [b или e] - (эта позиция не имеет значения) -d', которая добавит к счетчику 2, поэтому после того, как функция пройдёт, она будет count = 2

1 Ответ

1 голос
/ 15 декабря 2011

Строка 'a (b или e) * d' не может начинаться со строки 'a (b или e) * d'.Следовательно, строки такого типа, присутствующие в длинной строке, не могут перекрываться, и тогда можно найти регулярное выражение, чтобы найти то, что вам нужно:

import re

ss = 'abcdaecdagcd'

regx = re.compile('a[be].d')

print regx.findall(ss)
print len(regx.findall(ss))

result

['abcd', 'aecd']
2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...