Строки представляют собой набор символов. Каждый символ в строке занимает определенную позицию, т.е имеет свой индекс. Зная этот индекс, мы можем получить доступ к тому или иному символу. В этой статье мы рассмотрим, как найти индекс символа в строке.
Скачивайте книги ТОЛЬКО на русском языке у нас в телеграм канале: PythonBooksRU
Как найти индекс символа в строке при помощи функции find()
Функция find() возвращает позицию подстроки. Мы также можем указать начальную и конечную позиции, между которыми хотим искать (по умолчанию поиск происходит от начала до конца строки).
В следующем коде мы используем эту функцию для поиска позиции символа в строке.
s = 'python is fun' c = 'n' print(s.find(c)) # 5
Обратите внимание, что функция возвращает позицию символа, идущего в строке первым. То есть мы получили индекс символа «n» из слова «python», а не из слова «fun». Также следует помнить, что функция find() возвращает -1, если заданная подстрока отсутствует в строке.
Использование функции rfind()
Эта функция аналогична функции find(), с той лишь разницей, что она возвращает последнюю позицию, на которой расположена искомая подстрока. Например:
s = 'python is fun' c = 'n' print(s.rfind(c)) #12
Как найти индекс символа в строке при помощи функции index()
Функция index() тоже позволяет найти индекс подстроки в строке. Как и find(), она возвращает первое вхождение искомого символа в строке. Например:
s = 'python is fun' c = 'n' print(s.index(c)) # 5
Разница между функциями index() и find() заключается в том, что функция index() возвращает ValueError, если в строке отсутствует нужный символ.
Использование цикла for для поиска позиции символа в строке
При таком подходе мы перебираем символы строки в цикле и сравниваем каждый символ с искомым. Каждая позиция, по которой найдено совпадение, отмечается и сохраняется в отдельной переменной.
Следующий код реализует эту логику.
s = 'python is fun'
c = 'n'
lst = []
for pos,char in enumerate(s):
if(char == c):
lst.append(pos)
print(lst)
#[5, 12]
Мы используем функцию enumerate(), поскольку она упрощает итерацию и присваивает переменную счетчика каждому символу строки.
Это также можно реализовать с помощью list comprehension, что считается более быстрым и чистым решением. Например:
s = 'python is fun' c = 'n' print([pos for pos, char in enumerate(s) if char == c]) # [5, 12]
Перевод статьи Manav Narula «Find Character in a String in Python».

Пингбэк: Как получить последние символы строки в Python