- 6 августа 2025
- 5 минут
- 278
Строки в Python. Общие понятия и функции
Статью подготовили специалисты образовательного сервиса Zaochnik.
Базовое понятие строк в Python
Строка представляет собой последовательность символов и имеет тип `str`.
```python
type('2')
<class 'str'>
```
В Python не существует отдельного типа для символов; каждый символ является строкой длиной 1.
Строку можно получить с помощью функции `input()`, которая считывает данные со стандартного ввода.
Для строк предусмотрена операция конкатенации (сложение), а также операция умножения строки на число.
```python
'Hello' + 'World'
'HelloWorld'
'ABC' * 10
'ABCABCABCABCABCABCABCABCABCABC'
```
Определить количество символов (длину строки) можно с помощью функции `len`:
```python
s = 'Hello'
print(len(s))
5
```
В Python длина строки не ограничена, за исключением памяти, выделенной под программу.
Литералы строк в Python
- Строки можно записывать в апострофах:
‘spa"m’
- Или в кавычках:
“spa'm”
- Также они могут быть в тройных апострофах или тройных кавычках:
''spam''', """spam"""
Экранированные последовательности выглядят так:
“s\tp\na\0m”
- Неформатированные строки, в которых символ обратной косой черты не рассматривается как управляющий, обозначаются `r`:
r"C:\new\test\0012"
- Если необходимо вывести обратную косую черту, её следует записать дважды:
‘Symbol \\ can be also used.’
- В неформатированных строках экранированные символы игнорируются:
s = r"C:\new\test\0012"
print(s)
Этот код выведет: `C:\new\test\0012`.
- При использовании обычных кавычек необходимо также дублировать каждую косую черту:
s = “C:\\new\\test\\0012”
- Несколько подряд идущих литералов автоматически конкатенируются даже без знака `+`:
s = 'Infinite' "blue" ‘sky’
- Строки в тройных кавычках могут содержать текст в нескольких строках, и пробелы в начале каждой строки также включаются:
s = """Happy birthday to you,
My darling Findus!
Your hostess."""
- Такой же эффект можно получить с одинарными кавычками, оставляя обратный слэш в конце каждой строки (но не рекомендуется использовать пробел после `\`):
s = "Happy birthday to you,\
My darling Findus!\
Your hostess."
Срезы строк в Python
Срез (slice) — это извлечение одного символа или фрагмента из строки.
Существует три основных формы срезов. Самый простой способ — получить отдельный символ строки, обозначаемый как `S[i]`, где `i` — это индекс, начинающийся с 0.
Если `S = 'Hello'`, то:
- `S[0]=='H'`
- `S[1]=='e'`
- `S[2]=='l'`
- `S[3]=='l'`
- `S[4]=='o'`
Индексы символов называются индексами, а если индекс отрицательный, то отсчет происходит с конца строки.
- `S[-1]=='o'`
- `S[-2]=='l'`
- `S[-3]=='l'`
- `S[-4]=='e'`
- `S[-5]=='H'`
Если индекс выходит за границы строки, возникнет ошибка `IndexError: string index out of range`.
Срез с двумя параметрами: `S[a:b]`, возвращает подстроку из `b-a` символов, начиная с индекса `a` и заканчивая индекси `b`, не включая его.
S[1:4] == 'ell'
Такое же значение будет при `S[-4:-1]`. В пределах одного среза можно использовать как положительные, так и отрицательные индексы. Например, `S[1:-1]` возвращает строку без первого и последнего символа.
При использовании такой формы среза не возникает ошибок `IndexError`. Например, `S[1:5]` вернет строку ‘ello’, даже если второй индекс значительно превышает длину строки.
Если второй параметр опустить, срез будет до конца строки. Например, `S[1:]` удаляет первый символ, а `S[:-1]` — последний. Срез `S[:]` будет равен самой строке `S`.
Если в срезе указать третий параметр `S[a:b:d]`, третий параметр задает шаг. Например, при `d=2` будут взяты каждый второй символ, а для `d=-1` — символы в обратном порядке.
Примеры срезов
Для введенной строки:
s = input() //
Выведем третий символ:
print(s[2])
Предпоследний символ:
print(s[-2])
Первые пять символов:
print(s[0:5])
Вся строка, кроме последних двух символов:
print(s[:-2])
Все символы с четными индексами (начиная с 0):
print(s[::2])
Все символы с нечетными индексами:
print(s[1::2])
Все символы в обратном порядке:
print(s[::-1])
Все символы через один в обратном порядке, начиная с последнего:
print(s[::-2])