- •Возможности языка python
- •Скачать Python
- •Установка Python на Windows
- •Установка Python на linux системы (ubuntu, linux mint и другие)
- •Первая программа. Среда разработки IDLE
- •Синтаксис языка Python
- •Синтаксис
- •Несколько специальных случаев
- •Инструкция if-elif-else, проверка истинности, трехместное выражение if/else
- •Синтаксис инструкции if
- •Проверка истинности в Python
- •Трехместное выражение if/else
- •Циклы for и while, операторы break и continue, волшебное слово else
- •Цикл while
- •Цикл for
- •Оператор continue
- •Оператор break
- •Волшебное слово else
- •Ключевые слова, модуль keyword
- •Ключевые слова
- •Модуль keyword
- •Встроенные функции
- •Встроенные функции, выполняющие преобразование типов
- •Другие встроенные функции
- •Числа: целые, вещественные, комплексные
- •Целые числа (int)
- •Комплексные числа (complex)
- •Работа со строками в Python: литералы
- •Литералы строк
- •Строки. Функции и методы строк
- •Базовые операции
- •Другие функции и методы строк
- •Форматирование строк. Метод format
- •Форматирование строк с помощью метода format
- •Списки (list). Функции и методы списков
- •Что такое списки?
- •Функции и методы списков
- •Индексы и срезы
- •Взятие элемента по индексу
- •Срезы
- •Кортежи (tuple)
- •Зачем нужны кортежи, если есть списки?
- •Как работать с кортежами?
- •Операции с кортежами
- •Словари (dict) и работа с ними. Методы словарей
- •Методы словарей
- •Множества (set и frozenset)
- •Что такое множество?
- •frozenset
- •Функции и их аргументы
- •Именные функции, инструкция def
- •Аргументы функции
- •Анонимные функции, инструкция lambda
- •Исключения в python. Конструкция try - except для обработки исключений
- •Байты (bytes и bytearray)
- •Bytearray
- •Файлы. Работа с файлами.
- •Чтение из файла
- •Запись в файл
- •With ... as - менеджеры контекста
- •PEP 8 - руководство по написанию кода на Python
- •Содержание
- •Внешний вид кода
- •Пробелы в выражениях и инструкциях
- •Комментарии
- •Контроль версий
- •Соглашения по именованию
- •Общие рекомендации
- •Документирование кода в Python. PEP 257
- •Что такое строки документации?
- •Однострочные строки документации
- •Многострочные строки документации
- •Работа с модулями: создание, подключение инструкциями import и from
- •Подключение модуля из стандартной библиотеки
- •Использование псевдонимов
- •Инструкция from
- •Создание своего модуля на Python
- •Объектно-ориентированное программирование. Общее представление
- •Инкапсуляция, наследование, полиморфизм
- •Инкапсуляция
- •Наследование
- •Полиморфизм
- •Перегрузка операторов
- •Перегрузка арифметических операторов
- •Декораторы
- •Передача декоратором аргументов в функцию
- •Декорирование методов
- •Декораторы с аргументами
- •Некоторые особенности работы с декораторами
- •Примеры использования декораторов
- •Часто задаваемые вопросы
- •Почему я получаю исключение UnboundLocalError, хотя переменная имеет значение?
- •Каковы правила для глобальных и локальных переменных в Python?
- •Почему анонимные функции (lambda), определенные в цикле с разными значениями, возвращают один и тот же результат?
- •Как организовать совместный доступ к глобальным переменным для нескольких модулей?
- •Как правильнее использовать импортирование?
- •Почему значения по умолчанию разделяются между объектами?
- •Как передать опциональные или именованные параметры из одной функции в другую?
- •Как создавать функции более высокого порядка?
- •Как скопировать объект в Python?
- •Как узнать доступные методы и атрибуты объекта?
- •Как можно узнать имя объекта?
- •Можно ли писать обфусцированные однострочники?
- •Почему -22 // 10 равно -3?
- •Как можно изменить строку?
- •Как использовать строки для вызова функций/методов?
- •Как удалить все символы новой строки в конце строки?
- •Как удалить повторяющиеся элементы в списке?
- •Как создать многомерный список?
Глава 11
Строки. Функции и методы строк
Итак, о работе со строками мы немного поговорили, теперь поговорим о функциях и ме-
тодах строк.
Я постарался собрать здесь все строковые методы и функции, но если я что-то забыл - поправляйте.
11.1 Базовые операции
•Конкатенация (сложение)
>>>S1 = 'spam'
>>>S2 = 'eggs'
>>>print(S1 + S2) 'spameggs'
•Дублирование строки
>>>print('spam' * 3) spamspamspam
•Длина строки (функция len)
>>>len('spam')
4
•Доступ по индексу
>>>S = 'spam'
>>>S[0]
's'
>>>S[2]
'a'
>>>S[-2]
'a'
Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
33
Самоучитель Python, Выпуск 0.2
•Извлечение среза
Оператор извлечения среза: [X:Y]. X – начало среза, а Y – окончание;
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0, а второй - длине строки.
>>>s = 'spameggs'
>>>s[3:5]
'me'
>>>s[2:-2] 'ameg'
>>>s[:6] 'spameg'
>>>s[1:] 'pameggs'
>>>s[:]
'spameggs'
Кроме того, можно задать шаг, с которым нужно извлекать срез.
>>>s[::-1] 'sggemaps'
>>>s[3:5:-1]
''
>>>s[2::2] 'aeg'
11.2Другие функции и методы строк
При вызове методов необходимо помнить, что строки в Python относятся к категории неизменяемых последовательностей, то есть все функции и методы могут лишь создавать новую строку.
>>>s = 'spam'
>>>s[1] = 'b'
Traceback (most recent call last): File "", line 1, in
s[1] = 'b'
TypeError: 'str' object does not support item assignment
>>>s = s[0] + 'b' + s[2:]
>>>s
'sbam'
Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной.
11.3 Таблица “Функции и методы строк”
11.2. Другие функции и методы строк |
34 |
|
|
|
Самоучитель Python, Выпуск 0.2 |
||
|
Функция или метод |
|
Назначение |
|
|
|
|
|
|||
|
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.1nd(str, [start],[end]) |
|
Поиск подстроки в строке. Возвращает но- |
|
|
|
S.r1nd(str, [start],[end]) |
|
мер первого вхождения или -1 |
|
|
|
|
Поиск подстроки в строке. Возвращает но- |
|
|
|
|
S.index(str, [start],[end]) |
|
мер последнего вхождения или -1 |
|
|
|
|
Поиск подстроки в строке. Возвращает |
|
|
|
|
|
|
номер первого вхождения или вызывает |
|
|
|
S.rindex(str, [start],[end]) |
|
ValueError |
|
|
|
|
Поиск подстроки в строке. Возвращает но- |
|
|
|
|
|
|
мер последнего вхождения или вызывает |
|
|
|
S.replace(шаблон, замена) |
|
ValueError |
|
|
|
|
Замена шаблона |
|
|
|
|
S.split(символ) |
|
Разбиение строки по разделителю |
|
|
|
S.isdigit() |
|
Состоит ли строка из цифр |
|
|
|
S.isalpha() |
|
Состоит ли строка из букв |
|
|
|
S.isalnum() |
|
Состоит ли строка из цифр или букв |
|
|
|
S.islower() |
|
Состоит ли строка из символов в нижнем |
|
|
|
S.isupper() |
|
регистре |
|
|
|
|
Состоит ли строка из символов в верхнем |
|
|
|
|
S.isspace() |
|
регистре |
|
|
|
|
Состоит ли строка из неотображаемых |
|
|
|
|
|
|
символов (пробел, символ перевода стра- |
|
|
|
|
|
ницы (‘\f’), “новая строка” (‘\n’), “пере- |
|
|
|
|
|
вод каретки” (‘\r’), “горизонтальная табу- |
|
|
|
|
|
ляция” (‘\t’) и “вертикальная табуляция” |
|
|
|
S.istitle() |
|
(‘\v’)) |
|
|
|
|
Начинаются ли слова в строке с заглавной |
|
|
|
|
S.upper() |
|
буквы |
|
|
|
|
Преобразование строки к верхнему реги- |
|
|
|
|
S.lower() |
|
стру |
|
|
|
|
Преобразование строки к нижнему реги- |
|
|
|
|
S.startswith(str) |
|
стру |
|
|
|
|
Начинается ли строка S с шаблона str |
|
|
|
|
S.endswith(str) |
|
Заканчивается ли строка S шаблоном str |
|
|
|
S.join(список) |
|
Сборка строки из списка с разделителем S |
|
|
|
ord(символ) |
|
Символ в его код ASCII |
|
|
|
|
|
Продолжается на следующей странице |
|
|
11.3. Таблица “Функции и методы строк” |
35 |
|
|
|
Самоучитель Python, Выпуск 0.2 |
||
|
Table 11.1 – продолжение с предыдущей страницы |
||||
|
Функция или метод |
|
Назначение |
|
|
|
|
|
|||
|
chr(число) |
|
Код ASCII в символ |
|
|
|
S.capitalize() |
|
Переводит первый символ строки в верх- |
|
|
|
S.center(width, [1ll]) |
|
ний регистр, а все остальные в нижний |
|
|
|
|
Возвращает отцентрованную строку, по |
|
|
|
|
|
|
краям которой стоит символ 1ll (пробел по |
|
|
|
S.count(str, [start],[end]) |
|
умолчанию) |
|
|
|
|
Возвращает количество непересекающих- |
|
|
|
|
|
|
ся вхождений подстроки в диапазоне [на- |
|
|
|
|
|
чало, конец] (0 и длина строки по умолча- |
|
|
|
S.expandtabs([tabsize]) |
|
нию) |
|
|
|
|
Возвращает копию строки, в которой все |
|
|
|
|
|
|
символы табуляции заменяются одним |
|
|
|
|
|
или несколькими пробелами, в зависимо- |
|
|
|
|
|
сти от текущего столбца. Если TabSize не |
|
|
|
|
|
указан, размер табуляции полагается рав- |
|
|
|
S.lstrip([chars]) |
|
ным 8 пробелам |
|
|
|
|
Удаление пробельных символов в начале |
|
|
|
|
S.rstrip([chars]) |
|
строки |
|
|
|
|
Удаление пробельных символов в конце |
|
|
|
|
S.strip([chars]) |
|
строки |
|
|
|
|
Удаление пробельных символов в начале |
|
|
|
|
S.partition(шаблон) |
|
и в конце строки |
|
|
|
|
Возвращает кортеж, содержащий часть |
|
|
|
|
|
|
перед первым шаблоном, сам шаблон, и |
|
|
|
|
|
часть после шаблона. Если шаблон не най- |
|
|
|
|
|
ден, возвращается кортеж, содержащий |
|
|
|
S.rpartition(sep) |
|
саму строку, а затем две пустых строки |
|
|
|
|
Возвращает кортеж, содержащий часть |
|
|
|
|
|
|
перед последним шаблоном, сам шаблон, |
|
|
|
|
|
и часть после шаблона. Если шаблон не |
|
|
|
|
|
найден, возвращается кортеж, содержа- |
|
|
|
|
|
щий две пустых строки, а затем саму стро- |
|
|
|
S.swapcase() |
|
ку |
|
|
|
|
Переводит символы нижнего регистра в |
|
|
|
|
S.title() |
|
верхний, а верхнего – в нижний |
|
|
|
|
Первую букву каждого слова переводит в |
|
|
|
|
|
|
верхний регистр, а все остальные в ниж- |
|
|
|
S.z1ll(width) |
|
ний |
|
|
|
|
Делает длину строки не меньшей width, по |
|
|
|
|
|
|
необходимости заполняя первые символы |
|
|
|
S.ljust(width, 1llchar=” ”) |
|
нулями |
|
|
|
|
Делает длину строки не меньшей width, по |
|
|
|
|
|
|
необходимости заполняя последние сим- |
|
|
|
|
|
волы символом 1llchar |
|
|
|
|
|
Продолжается на следующей странице |
|
|
|
|
|
11.3. Таблица “Функции и методы строк” |
36 |
|
|
|
Самоучитель Python, Выпуск 0.2 |
||
|
Table 11.1 – продолжение с предыдущей страницы |
||||
|
Функция или метод |
|
Назначение |
|
|
|
|
|
|||
|
S.rjust(width, 1llchar=” ”) |
|
Делает длину строки не меньшей width, по |
|
|
|
|
|
необходимости заполняя первые символы |
|
|
|
S.format(*args, **kwargs) |
|
символом 1llchar |
|
|
|
|
Форматирование строки |
|
|
11.3. Таблица “Функции и методы строк” |
37 |