Получить n-е вхождение буквы в строке (python) - PullRequest
1 голос
/ 17 июня 2020

Допустим, есть строка "abcd#abcd#a#"

Как получить индекс 2-го вхождения '#' и получить на выходе 9? Поскольку позиция второго вхождения символа '#' равна 9

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Использование выражения генератора:

text = "abcd#abcd#a#"
gen = (i for i, l in enumerate(text) if l == "#")

next(gen) # skip as many as you need
4

next(gen) # get result
9

В качестве функции:

def index_for_occurrence(text, token, occurrence):
    gen = (i for i, l in enumerate(text) if l == token)
    for _ in range(occurrence - 1):
        next(gen)
    return next(gen)

Результат:

index_for_occurrence(text, "#", 2)
9
0 голосов
/ 17 июня 2020
s = 'abcd#abcd#a#'
s.index('#', s.index('#')+1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...