как найти индекс повторяющегося слова в строке без пробелов - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь написать код для вывода индекса каждого местоположения, в котором слово встречается в строке без пробелов.

В частности, ген: «действовать» в последовательности: «avdgagtactsdfactactfgactlkact».

Вывод должен быть:

Расположение гена: [7, 13, 16, 21, 26] '

Пожалуйста, помогите

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018

Я бы сделал так:

j = 'avdgagtactsdfactactfgactlkact'
[i for i, x in enumerate(j) if j[i:i+3] == 'act']

[7, 13, 16, 21, 26]
0 голосов
/ 19 декабря 2018

Объект соответствия регулярного выражения имеет удобный .start() метод:

In [1]: import re

In [2]: s = "avdgagtactsdfactactfgactlkact"

In [3]: [m.start() for m in re.finditer("act", s)]
Out[3]: [7, 13, 16, 21, 26]
0 голосов
/ 19 декабря 2018

Ответ с регулярными выражениями:

import re

gene = 'act'
sequence = 'avdgagtactsdfactactfgactlkact'

[m.start() for m in re.finditer(gene, sequence)]
0 голосов
/ 19 декабря 2018

Одной альтернативой может быть использование списка :

sequence = 'avdgagtactsdfactactfgactlkact'
gene = 'act'

result = [i for i in range(len(sequence) - len(gene) + 1) if sequence[i:].startswith(gene)]
print(result)

Выход

[7, 13, 16, 21, 26]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...