/
Программирование
/
Курс Python
/

Извлечение символов из строки

Python: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращенном формате вида A. Ivanov. Для этого потребуется взять первую букву имени.

Извлечение символов из строки

В Python для доступа к символам строки используют индексацию. Индексация означает, что у каждого символа в строке есть свой номер, то есть индекс. Индексация начинается с нуля: у первого символа индекс 0, у второго 1 и так далее. Представим, что у нас есть строка:

first_name = 'Alexander'

Чтобы получить первую букву, указываем ее позицию (индекс) в квадратных скобках:

print(first_name[0])  # => A

Индексы в Python (и во многих языках) начинаются с нуля:

Символ	A	l	e	x	a	n	d	e	r
Индекс	0	1	2	3	4	5	6	7	8

Длина строки Alexander равна 9, поэтому индекс последнего символа равен 8, то есть 9 - 1.

Чтобы получить, например, последний символ, можно написать:

print(first_name[8])  # => r

Если изменится длина строки, то последний элемент тоже сдвинется и придется указывать новый индекс, по которому расположен этот символ.

А если выйти за границы строки, то мы получим ошибку:

print(first_name[9])
# IndexError: string index out of range

Поэтому в программировании принято проверять длину строки и обращаться к ее символам только если это безопасно. Мы до этого дойдем в будущих уроках.

Укороченное извлечение с конца

Для получения элементов с конца лучше пользоваться отрицательными индексами. В таком случае отсчет начинается с конца.

print(first_name[-1])  # => r, последний символ
print(first_name[-2])  # => e, предпоследний символ
Строка:  'H' 'e' 'x' 'l' 'e' 't'
Индекс:   0   1   2   3   4   5
С конца: -6  -5  -4  -3  -2  -1

Отрицательные индексы работают так:

  • -1 соответствует последнему символу
  • -2 соответствует предпоследнему
  • и так далее

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

Индекс можно хранить в переменной:

index = 0
print(first_name[index])  # => A

Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.

Спецсимволы

При индексации учитываются обычные буквы, знаки и спецсимволы. Все они занимают позицию в строке и имеют свой индекс, даже если их "не видно" на экране.

Например, в строке \nyou первый символ представляет собой \n (перенос строки), а под индексом 1 уже идет буква y. Поэтому обращение magic[1] вернет именно y.

Подумайте: что выведет этот код?

magic = '\nyou'
print(magic[1])  # => ?

Вывод будет:

y

Задание

В трёх именах участников квиза спрятано секретное слово. Извлеките нужные символы из переменной text по индексам, соедините их и выведите на экран слово grip.

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются