Можем ли мы найти индекс второго вхождения конкретного символа в строке в Python - PullRequest
0 голосов
/ 08 июля 2019

Считайте, что я хочу найти 2-й случай появления символа 'o' в строке 'Hello World' (мы можем видеть, что индекс будет равен 7).Можем ли мы написать с помощью метода 'index' или 'find' в python?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Вы можете использовать регулярное выражение, которое также работает для подстрок, как показано в этот вопрос :

import re
indexes = [m.start() for m in re.finditer('o', 'Hello World')]  # [4, 7]
print(indexes[1])  # get second occurrence
0 голосов
/ 08 июля 2019

Вы можете сделать это несколькими способами, вот некоторые из них:

def find_all(a_str, sub):
    start = 0
    while True:
        start = a_str.find(sub, start)
        if start == -1: return
        yield start
        start += len(sub) # use start += 1 to find overlapping matches

string =  'Hello World'
print (list(find_all(string, 'o'))[1])

output:

7

string =  'Hello World'
print([i for i in range(len(string)) if string.startswith('o', i)][1])

output:

7

...