Введение в строки. Базовые операции над строками
Сегодня мы с вами познакомимся с еще одним типом данных – строками.
Строки в Python задаются очень просто: или в двойных кавычках:
или в одинарных (апострофах):
Всегда, когда задаются строки, не забывайте про кавычки, если их не поставить:
то Panda будет восприниматься как переменная и возникнет ошибка.
В Python есть еще один способ определения многострочных строк. Для этого используются тройные кавычки (одинарные или двойные, неважно) и в них прописывается текст, например, так:
text = '''Я Python бы выучил только за то, что есть популярные курсы. Много хороших курсов!'''
Если отобразить содержимое этой строки в консоли Питона, то увидим специальный символ ‘\n’:
'Я Python бы выучил только за то,\nчто есть популярные курсы.\nМного хороших курсов!'
Это один символ, отвечающий в тексте за перенос на новую строку и когда функция print() встречает его, то осуществляет такой переход:
То есть, просто запомните, что для перехода на новую строку используется спецсимвол, который записывается в виде ‘\n’. Если записать просто ‘n’ – это будет символ латинской буквы n, а при добавлении слеша – превращается в символ переноса строки.
Далее, строка может вообще не содержать ни одного символа:
Получаем пустую строку. Но если добавить хотя бы один символ, даже если это будет пробел:
то имеем уже не пустую строку, в данном случае содержащей символ пробела.
Базовые операции над строками
Давайте посмотрим, какие базовые операции можно выполнять со строками в Python. Например, мы хотим соединить две строки между собой:
s1 = "Я люблю" s2 = "язык Python"
Это можно сделать с помощью оператора +, который в случае со строками выполняет их объединение (конкатенацию):
Но мы бы хотели добавить пробел между словами. Сделаем это так:
С помощью первого оператора + добавляем пробел к первой строке, а затем, вторым оператором + добавляем вторую строку s2.
Но при использовании оператора конкатенации следует быть осторожным – он объединяет строки между собой. Например, команда:
приведет к ошибке, так как операнд справа является числом, а не строкой. Если нам все же необходимо соединить строку с числом, то предварительно число нужно преобразовать в строку. Сделать это можно с помощью специальной функции str():
Функция str() выполняет преобразование в строки разные типы данных, не только числа, например, можно указать булевое значение:
а также другие типы данных, о которых мы еще с вами будем говорить.
Следующий оператор *, применительно к строкам, выполняет их дублирование, указанное число раз:
Причем, здесь мы должны указывать именно целое число, для вещественных получим ошибку:
И это понятно, так как продублировать строку 5,5 раз нельзя.
Следующая функция len() возвращает длину строки (число символов в строке):
Для пустой строки получим значение 0:
И, как видите, этой функции можно передавать или переменную на строку, или непосредственно записывать строки:
Следующий оператор in позволяет проверять наличие подстроки в строке, например:
'ab' in "abracadabra" 'abc' in "abracadabra"
Следующая важная группа операторов – сравнения строк. В самом простом случае, строки можно сравнивать на равенство:
вернет False, так как большая буква H и малая h – это два разных символа. Для сравнения на неравенство используем оператор не равно:
Также смотрите строка «hello» (без пробела) и строка «hello » (с пробелом) – это две разные строки и они не равны между собой.
Наконец, строки можно сравнивать на больше и меньше, например, кот больше, чем кит с точки зрения строк:
Почему так? Все просто. Здесь используется лексикографический порядок сравнения. Сначала берутся первые символы (они равны), затем переходим ко вторым символам. По алфавиту сначала идет символ ‘и’, а потом – символ ‘о’, поэтому ‘о’ больше, чем ‘и’. Как только встретились не совпадающие символы, сравнение завершается и последующие символы строк игнорируются.
то получим False, так как ни один символ не больше соответствующего другого из второй строки. Но, добавив пробел в первую строку:
получим значение True, так как при всех прочих равных условиях больше считается более длинная строка. Наконец, если у первой строки первую букву сделать заглавной:
то получим False. Почему? Дело в том, что каждый символ в компьютере связан с определенным числом – кодом, в соответствии с кодовой таблицей. Например, в таблице ASCII мы видим, что сначала идут символы заглавных букв, а затем – прописных. Поэтому коды больших букв меньше соответствующих кодов малых букв.
Конечно, в Python используется немного другая кодировка UTF-8, но в ней этот принцип сохраняется. Мы можем легко посмотреть код любого символа с помощью функции ord():
И, как видите, для буквы ‘К’ код меньше, чем для ‘к’.
- + (конкатенация) – соединение строк;
- * (дублирование) – размножение строкового фрагмента;
- str() – функция для преобразования аргумента в строковое представление;
- len() – вычисление длины строки;
- in – оператор для проверки вхождения подстроки в строку;
- операторы сравнения: == != >
- ord() – определение кода символа.
Строки. Функции и методы строк
Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и методах строк.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл — поправляйте.
Базовые операции
При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
: Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
Таблица «Функции и методы строк»
Функция или метод | Назначение |
---|---|
S = ‘str’; S = «str»; S = »’str»’; S = «»»str»»» | Литералы строк |
S = «s\np\ta\nbbb» | Экранированные последовательности |
S = r»C:\temp\new» | Неформатированные строки (подавляют экранирование) |
S = b»byte» | Строка байтов |
S1 + S2 | Конкатенация (сложение строк) |
S1 * 3 | Повторение строки |
S[i] | Обращение по индексу |
S[i:j:step] | Извлечение среза |
len(S) | Длина строки |
S.find(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или -1 |
S.rfind(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или -1 |
S.index(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError |
S.rindex(str, [start],[end]) | Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError |
S.replace(шаблон, замена[, maxcount]) | Замена шаблона на замену. maxcount ограничивает количество замен |
S.split(символ) | Разбиение строки по разделителю |
S.isdigit() | Состоит ли строка из цифр |
S.isalpha() | Состоит ли строка из букв |
S.isalnum() | Состоит ли строка из цифр или букв |
S.islower() | Состоит ли строка из символов в нижнем регистре |
S.isupper() | Состоит ли строка из символов в верхнем регистре |
S.isspace() | Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы (‘\f’), «новая строка» (‘\n’), «перевод каретки» (‘\r’), «горизонтальная табуляция» (‘\t’) и «вертикальная табуляция» (‘\v’)) |
S.istitle() | Начинаются ли слова в строке с заглавной буквы |
S.upper() | Преобразование строки к верхнему регистру |
S.lower() | Преобразование строки к нижнему регистру |
S.startswith(str) | Начинается ли строка S с шаблона str |
S.endswith(str) | Заканчивается ли строка S шаблоном str |
S.join(список) | Сборка строки из списка с разделителем S |
ord(символ) | Символ в его код ASCII |
chr(число) | Код ASCII в символ |
S.capitalize() | Переводит первый символ строки в верхний регистр, а все остальные в нижний |
S.center(width, [fill]) | Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию) |
S.count(str, [start],[end]) | Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
S.expandtabs([tabsize]) | Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам |
S.lstrip([chars]) | Удаление пробельных символов в начале строки |
S.rstrip([chars]) | Удаление пробельных символов в конце строки |
S.strip([chars]) | Удаление пробельных символов в начале и в конце строки |
S.partition(шаблон) | Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
S.rpartition(sep) | Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку |
S.swapcase() | Переводит символы нижнего регистра в верхний, а верхнего – в нижний |
S.title() | Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний |
S.zfill(width) | Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями |
S.ljust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar |
S.rjust(width, fillchar=» «) | Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar |
S.format(*args, **kwargs) | Форматирование строки |
Для вставки кода на Python в комментарий заключайте его в теги