Современные языки программирования позволяют не только выполнять вычисления, но и обрабатывать разнообразные тексты. Для этого существует специальный тип данных — строка.
Строка — это упорядоченная последовательность символов. В языке Python 3 строки могут содержать любые символы Unicode. Записывая в программе строковый литерал, мы должны заключить его в кавычки (в Python допустимо использовать как одинарные, так и двойные). Некоторые символы вводятся в виде особых обозначений — экранированных последовательностей: \n
— новая срока, \t
— горизонтальная табуляция, \\
— обратная наклонная черта, \"
— кавычки и некоторые другие.
При вводе строковых данных с клавиатуры, в отличие от чисел, преобразовывать тип не требуется:
name = input('Введите ваше имя: ')
Что же можно сделать со строками? Во-первых, строки можно «склеивать»:
st1 = 'по'
st2 = 'ход'
st3 = st1 + st2 # значением переменной st3 станет строка 'поход'
Во-вторых, их можно дублировать:
st1 = 'мяу'
st2 = st1 + st1 + st1 # склеив три строки st1 получаем 'мяумяумяу'
st3 = st1 * 3 # повторяем строку st1 три раза — результат тот же
Если нам нужен какой-то один символ, для его извлечения мы указываем после имени переменной индекс (порядковый номер) этого символа. Не забывайте, что нумерация в Python всегда начинается с нуля. Можно отсчитывать символы и не от начала, а от конца слова. В этом случае индексы будут отрицательными.
st = 'компьютер'
print(st[0], st[2], st[-1], st[-3]) # на экране будет 'к м р т'
А что если мы хотим извлечь не один символ, а целый фрагмент строки? На этот случай в Python есть операция извлечения среза:
имя_переменной
[
начало
:
конец
]
имя_переменной
[
начало
:
конец
:
шаг
]
Как и для функции range
, параметр «конец» показывает индекс, перед которым закончится срез.
Если не указать значение начала среза, будут взяты символы от самого начала исходной строки, если не указать значение конца — до конца исходной строки. Например:
st = 'поваран'
print(st[2:5]) # на экране — 'вар'
print(st[:5]) # на экране — 'повар'
print(st[2:]) # на экране — 'варан'
print(st[::3]) # на экране — 'пан'
Для обработки текста в Python имеется большое количество функций и методов. Полный их список можно посмотреть в справочнике, мы рассмотрим только несколько.
Некоторые функции и методы для работы со строками
Функция/метод | Назначение | Пример записи |
len(строка) | длина строки (количество символов) | a = len(st) |
ord(символ) | Unicode код символа | n = ord(‘я’) |
chr(целое_число) | символ по его коду | c = chr(12100) |
строка.find(подстрока) | индекс начала первого вхождения подстроки в строку (или -1) | i = st.find(‘вар’) |
строка.rfind(подстрока) | индекс начала последнего вхождения подстроки в строку (или -1) | i = st.rfind(‘вар’) |
строка.replace(ст1,ст2) | замена всех вхождений подстроки ст1 на ст2 | st1 = st.replace(‘a’,’o’) |
строка.count(подстрока) | количество вхождений подстроки в строку | n = st.count(‘a’) |
Примечание:
методы find, rfind, count могут быть вызваны с дополнительными параметрами, ограничивающими часть строки, в которой идет поиск, например:
n = st1.find('мышь', 12, 28)
Задания
1. Определите, какое значение получит строка st2 при выполнении фрагмента программы:
st1 = 'мур'
st2 = (st1 + '-') * 2 + st1
2. Определите, что будет выведено на экран при выполнении следующего фрагмента программы:
st1 = 'поборода'
print(st1[:5], st1[5:], st1[4:7])
print(st1[::3])
3. Какие слова будут выведены на экран при выполнении следующего фрагмента программы:
st = 'карп'
print(st)
st = st[:3] + 'а'
print(st)
st = st[0] + 'о' + st[2:]
print(s)
st = st[:2] + 'з' + st[-1]
print(st)
4. Определите, что будет выведено на экран при выполнении следующего фрагмента программы:
st = 'колонна'
st = st.replace('о','а')
print(st[:5])
5. Какие строки будут выведены на экран при выполнении следующего фрагмента программы:
st = 'колонна'
for i in range(len(st)) :
print(st[i:])
6. Составьте фрагмент программы, выводящий на экран…
- …первое слово строки st1, если строка состоит из нескольких слов, разделенных пробелами.
- …из строки st2 второе предложение (при условии, что в строке есть не меньше 2 предложений и каждое из них заканчивается точкой)