Как сделать столбцы в питоне

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Возвращает копию строки, в которой первая буква переведена в верхний регистр (заглавная), а остальные — в нижний (строчные).

Совет: если хотите сделать заглавными первые буквы всех слов в строке, используйте title() .

Этот метод помещает указанную строку в центр другой строки, ширина которой (в символах) определяется параметром width .

Все пространство, не заполненное центральной строкой, заполняется символами, заданными в параметре fillchar (по умолчанию используется пробел ASCII).

Если указанная ширина строки меньше, чем ширина исходной строки ( len(s) ), или равна ей, возвращается исходная строка.

Метод возвращает число вхождений указанной подстроки sub в строку в заданном промежутке ( [start, end] ).

Аргументы для определения начала и конца промежутка опциональны и интерпретируются как обозначение среза.

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

Например, если у вас есть строка хххх и вы хотите подсчитать, сколько в ней вхождений подстроки ххх, то в результате получите 1.

Возвращает декодированную версию строки в качестве байтового объекта. Кодировка по умолчанию — utf-8.

При помощи параметра errors можно задавать разные наборы схем обработки ошибок. Возможны следующие варианты:

strict (ошибки декодирования вызывают UnicodeError )

Возвращает True , если строка заканчивается на указанный суффикс; в противном случае возвращает False .

Суффикс также может быть кортежем суффиксов.

Если указывается аргумент start , проверка начинается с указанной позиции.

При указании аргумента end проверка останавливается на указанном символе. Оба аргумента опциональны.

Возвращает первый индекс в строке, на котором была найдена указанная подстрока.

Можно указать диапазон поиска при помощи опциональных аргументов start и end (они интерпретируются как срез).

Если подстрока в строке не найдена, возвращается -1 .

Примечание: метод find() стоит использовать, только если вам нужно знать позицию, с которой начинается подстрока. Если позиция вам не нужна и вы хотите просто проверить, встречается ли в строке эта подстрока, используйте оператор in .

При помощи этого метода можно отформатировать строку.

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

Каждое место для подстановки содержит или числовой индекс позиционного аргумента, или имя именованного аргумента.

Метод возвращает строку, в которой каждое поле подстановки заменено строковым значением соответствующего аргумента.

Tea and Coffee
Coffee and Tea
Peas and Beans
1, 2, 3
Lunch: Pizza, Wine

Lunch: Pizza, Wine
Lunch: Pizza, Drink
Lunch: Food, Wine

0
3
3
4
ValueError: substring not found

Этот метод возвращает True , если в строке есть хотя бы один символ, а все символы являются цифрами или буквами. В противном случае возвращается False .

Значение переменной c считается буквенно-цифровым, если хотя бы одно из выражений возвращает True :

Возвращает True , если все символы в строке — буквенные (и при этом в строке есть хоть один символ). В противном случае возвращает False .

Возвращает True , если все символы в строке являются десятичными символами (и если в строке есть хотя бы один символ). В противном случае возвращает False .

Возвращает True , если все символы в строке являются цифрами (и если в строке есть хотя бы один символ). Иначе возвращает False .

Метод isdigit() часто используется, например, при работе с надстрочными символами Unicode (обозначающими степень числа).
Цифра это символ, имеющий значение свойства Numeric_Type=Digit или Numeric_Type=Decimal .

Совет: для проверки зарезервированных идентификаторов, таких как def , for и class , используйте keyword.iskeyword() .

Возвращает True , если все символы строки являются строчными (т. е., стоят в нижнем регистре), а в строке есть как минимум один символ. В противном случае возвращает False .

Чтобы перевести строку в нижний регистр, можно использовать метод casefold() (это показано в последнем примере).

Возвращает True , если все символы в строке являются числовыми, и в строке есть хотя бы один символ. Иначе возвращает False .

К числовым символам относятся все цифры, а также все символы, имеющие в Unicode значение свойства Numeric_Type=Digit , Numeric_Type=Decimal или Numeric_Type=Numeric .

Возвращает True , если все символы в строке являются печатаемыми (и при этом в строке есть хотя бы один символ). Иначе возвращает False .

В этом контексте к печатаемым символам относятся те, которые не должны экранироваться при вызове метода repr() для этой строки. Это не касается обработки строк, записанных в sys.stdout или sys.stderr .

Возвращает True , если строка состоит из одних пробелов (и строка при этом не пустая). В противном случае возвращает False .

Возвращает True , если строка написана в title case (т. е., каждое слово написано с заглавной буквы, а все остальные буквы в словах строчные; это один из возможных вариантов набор заголовков, отсюда название).

Чтобы метод вернул True , строка также не должна быть пустой. В противном случае возвращается False .

Этот метод возвращает True , если все символы в строке стоят в верхнем регистре (т. е., заглавные), при этом строка содержит хотя бы один символ. В противном случе возвращается False .

Возвращает строку, которая является конкатенацией строк в итерируемом объекте.

Если в итерируемом объекте будут любые нестроковые значения, включая байтовые объекты, вы получите TypeError .

Разделителем между элементами служит заданная строка.

Возвращает строку, выровненную по левому краю в рамках большей строки (ее ширина в символах задается при помощи параметра width ).

Для заполнения места, не занятого оригинальной строкой, используются ASCII пробелы, но можно и указать желаемый символ — при помощи параметра fillchar .

Если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи len(s) ), то возвращается оригинальная строка.

Здесь все по аналогии с методом center() , только там строка выравнивается по центру.

Возвращает копию строки, в которой все символы переведены в нижний регистр.

Разумеется, речь идет о символах, которые в принципе могут быть как в верхнем, так и в нижнем регистре.

В плане замены символов этот метод менее агрессивен, чем casefold() . Для иллюстрации различия часто приводится пример с немецкой буквой ß , которая эквивалентна ss . Поскольку эта буква уже стоит в нижнем регистре, метод lower() ее просто пропустит, а вот метод casefold() преобразует в ss .

Возвращает копию строки с удаленными первыми символами (т.е., символами, стоящими слева).

В аргументе chars задается набор символов, которые нужно удалить. Если не задавать этот аргумент или установить его в None , по умолчанию будут удалены все пробелы слева.

Обратите внимание, что в качестве аргумента задается не префикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь слева направо, пока не достигнет первого символа, не входящего в набор.

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

Если передается только один аргумент, он должен быть словарем, в котором целые числа или символы (строки с длиной, равной 1) Unicode отражены на целые числа Unicode или строки (любой длины) или установлены на None . В таком случае ключи символов будут преобразованы в числа.

Если передается два аргумента, это должны быть строки одинаковой длины. В результате получится словарь, в котором каждый символ строки x будет отражен на символ в строке y , стоящий на такой же позиции.

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

Разделяет строку в месте первого вхождения заданного разделителя ( sep ) и возвращает кортеж из трех элементов: части строки до разделителя, самого разделителя и части строки после него.

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

Coffee bag. Coffee cup. Coffee leaves.
Coffee bag. Coffee cup. Tea leaves.

Возвращает самый большой индекс в строке, на котором была найдена указанная подстрока.

При помощи опциональных аргументов start и end можно задать диапазон для поиска подстроки в строке (эти аргументы интерпретируются как срез). Если подстрока в строке не найдена, возвращается -1 .

Работа этого метода аналогична работе метода find() , только find() ищет индекс первого вхождения подстроки.

Этот метод похож на приведенный выше метод rfind() , но если он не находит заданную подстроку sub , то выдает ValueError , а не -1.

В общем, как rfind() можно считать зеркальным отражением find() , так и rindex() , по сути, отражение index() .

0
8
10
9
ValueError: substring not found
ValueError: substring not found
ValueError: substring not found

Возвращает строку, выровненную по правому краю в рамках большей строки (ее ширина в символах задается при помощи параметра width ).

Для заполнения места, не занятого оригинальной строкой, используются символы, заданные при помощи параметра fillchar .

Если символ-заполнитель не задан, по умолчанию будут использоваться ASCII пробелы.

В случае, если заданная ширина строки меньше или равна длине оригинальной строки (определяется при помощи len(s) ), возвращается оригинальная строка.

Здесь все по аналогии с методом center() , где строка выравнивается по центру, и с методом ljust() , где строка выравнивается по левому краю.

Разделяет строку в месте последнего вхождения заданного разделителя ( sep ) и возвращает кортеж из трех элементов: части строки до разделителя, самого разделителя и части строки после него.

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

Работа этого метода как бы зеркально отражает работу метода partition() .

Возвращает список слов в строке, используя sep в качестве разделителя.

Если задан параметр maxsplit , будет отделено указанное число слов, причем с правого края строки.

Разделитель можно не задавать или указать None — в таком случае разделителем будет считаться любой пробел (или подстрока из пробелов).

Работа rsplit() — зеркальное отражение работы метода split() , о котором еще будет идти речь ниже.

Возвращает копию строки с удаленными последними символами (т.е., символами, стоящими справа).

В аргументе chars задается набор символов, которые нужно удалить. Если не задавать этот аргумент или установить его в None , по умолчанию будут удалены все пробелы справа.

Обратите внимание, что в качестве аргумента задается не суффикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь справа налево, пока не достигнет первого символа, не входящего в набор.

Работа этого метода — зеркальное отражение работы lstrip() .

Этот метод разбивает заданную строку на отдельные слова и возвращает список этих слов.

Строка-разделитель задается при помощи параметра sep.

Если разделитель указан, то последовательно расположенные разделители не группируются вместе. В этом случае считается, что они разделяют пустые строки. Например, '1,,2'.split(',') вернет ['1', '', '2'] .

Заданный разделитель может состоять из нескольких символов. Например, '1<>2<>3'.split('<>') вернет ['1', '2', '3'] .

Если метод split() применить к пустой строке и при этом указать разделитель, метод вернет [''] .

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

Если исходная строка состоит исключительно из пробелов или пуста, а в качестве разделителя будет указан None , то метод вернет [] .

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

Сами символы, отделяющие строчки, не будут входить в итоговый список, если не указать keepends=True .

Этот метод делит строку по следующим экранированным последовательностям:

\n — перевод строки;

\r — возврат каретки;

\r\n — возврат каретки + перевод строки;

\v или \x0b — вертикальная табуляция;

\f или \x0c — разрыв страницы;

\x1c — разделитель файлов;

\x1d — разделитель групп;

\x1e — разделитель записей;

\x85 — следующая строка;

\u2028 — разделитель строк;

\u2029 — разделитель абзацев.

Возвращает True , если строка начинается с указанного префикса; в противном случае возвращает False .

Префикс также может быть кортежем префиксов.

Если указывается аргумент start , проверка начинается с указанной позиции. При указании аргумента end проверка останавливается на указанном символе. Оба аргумента опциональны.

Этот метод — зеркальное отражение метода endswith() , о котором мы уже говорили.

Возвращает копию строки, в начале и конце которой удалены заданные символы. Этот набор символов, подлежащих удалению, задается в аргументе chars . Если не задавать этот аргумент или установить его в None , по умолчанию будут удалены все пробелы слева и справа.

Обратите внимание, что в качестве аргумента задается не префикс или суффикс, а именно набор символов, т. е., их порядок не имеет значения. Метод будет удалять все символы из набора, двигаясь и слева направо, и справа налево, пока с каждой стороны не достигнет первого символа, не входящего в набор.

Работа этого метода — своего рода комбинация работы методов lstrip() и rstrip() .

Возвращает копию строки, в которой все символы, стоящие в верхнем регистре, переведены в нижний, и наоборот.

Обратите внимание, что повторное применение метода swapcase() не всегда вернет строку в первоначальном виде.

Возвращает копию строки в формате заголовка (когда каждое слово в строке начинается с заглавной буквы, а все остальные — строчные).

Совет: если хотите сделать заглавной только первую букву строки, используйте метод capitalize() .

Tea And Coffee
Tea And Coffee

Возвращает переведенную копию строки, в которой каждый символ преобразован по правилам, прописанным в таблице перевода.

Для создания таблицы перевода можно воспользоваться вспомогательной функцией maketrans() .

Возвращает копию строки, которая приведена к указанной длине (задается при помощи параметра width ).

Знаки +/- указываются в исходной строке и учитываются при подсчете ее длины.

Если длина исходной строки больше или равна width , будет возвращена просто исходная строка.

Лаборатория Django-разработки

За 3 месяца отработай навыки Django-разработки до профессионального уровня на серьезном проекте под руководством наставника.


Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Pandas — главная Python-библиотека для анализа данных. Она быстрая и мощная: в ней можно работать с таблицами, в которых миллионы строк. Вместе с Марией Жаровой, ментором проекта на курсе по Data Science, рассказываем про команды, которые позволят начать работать с реальными данными.

Библиотека Pandas

Python в целом отлично подходит для анализа данных: с помощь него можно решать задачи автоматизации сбора и обработки данных и реализовать на работе новые подходы к анализу, например решать задачи с помощью обучения нейросетей.

В Pandas можно работать с данными трех структур:

  • последовательности (Series) — одномерные массивы данных;
  • фреймы (Data Frames) — объединение нескольких одномерных массивов в двумерный, то есть привычная таблица из строк и столбцов. Этот формат чаще всего используют аналитики;
  • панели (Panels) — трехмерная структура из нескольких фреймов.

Библиотека пригодится всем, кто работает с данными, особенно аналитикам. С помощью Pandas можно группировать таблицы, очищать и изменять данные, вычислять параметры и делать выборки.

У библиотеки открытый исходный код, она бесплатная, и в ней, в отличие от Excel, можно работать с данными в формате JSON. Подробнее о библиотеке мы писали в этой статье.

Среда разработки

Pandas работает как в IDE (средах разработки), так и в облачных блокнотах для программирования. Как установить библиотеку в конкретную IDE, читайте тут. Мы для примера будем работать в облачной среде Google Colab. Она удобна тем, что не нужно ничего устанавливать на компьютер: файлы можно загружать и работать с ними онлайн, к тому же есть совместный режим для работы с коллегами. Про Colab мы писали в этом обзоре.

Получите крепкий фундамент профессии Data Analyst с нуля за 6 месяцев. Все инструменты, необходимые junior-специалисту: Google Sheets, SQL, Python, Power BI и др. Кейсы на основе популярных бизнес-моделей и помощь в трудоустройстве.

Анализ данных в Pandas

На сайте Google Colab сразу появляется экран с доступными блокнотами. Создадим новый блокнот:


Импортирование библиотеки

Pandas недоступна в Python по умолчанию. Чтобы начать с ней работать, нужно ее импортировать с помощью этого кода:

pd — это распространенное сокращенное название библиотеки. Далее будем обращаться к ней именно так.

Загрузка данных

1. Загрузить в сессионное хранилище:


И прочитать с помощью такой команды:

2. Создать объект типа DataFrame вручную, например, если есть несколько списков и нужно соединить их в одну таблицу или если хотите наглядно оформить небольшой набор данных.

Это можно сделать через словарь и через преобразование вложенных списков (фактически таблиц).

Через вложенные списки:

Результаты будут эквивалентны.

Просмотр данных

Загруженный файл преобразован во фрейм и теперь хранится в переменной df. Посмотрим, как он выглядит, с помощью метода .head(), который по умолчанию выводит пять первых строк:

Если нужно посмотреть на другое количество строк, оно указывается в скобках, например df.head(12). Последние строки фрейма выводятся методом .tail().

Также чтобы просто полностью красиво отобразить датасет, используется функция display(). По умолчанию в Jupyter Notebook, если написать имя переменной на последней строке какой-либо ячейки (даже без ключевого слова display), ее содержимое будет отображено.

Размеры датасета

Количество строк и столбцов в датафрейме можно узнать, используя метод .shape:

Переименование столбцов

Названия столбцов можно переименовать под себя с помощью команды rename:

Характеристики датасета

Чтобы получить первичное представление о статистических характеристиках нашего датасета, достаточно этой команды:

Обзор содержит среднее значение, стандартное отклонение, минимум и максимум, верхние значения первого и третьего квартиля и медиану по каждому столбцу.

Еще одна команда показывает другую справку: сколько значений в каждом столбце (в нашем случае в столбцах нет пропущенных значений) и формат данных:

Работа с отдельными столбцами или строками

Выделить несколько столбцов можно разными способами.

1. Сделать срез фрейма


Срез можно сохранить в новой переменной:

Теперь можно выполнить любое действие с этим сокращенным фреймом.

2. Использовать метод loc

Если столбцов очень много, можно использовать метод loc, который ищет значения по их названию:

В этом случае мы оставили все столбцы от Места в рейтинге до Социальной поддержки.

3. Использовать метод iloc

Если нужно вырезать одновременно строки и столбцы, можно сделать это с помощью метода iloc:

Первый параметр показывает индексы строк, которые останутся, второй — индексы столбцов. Получаем такой фрейм:

В методе iloc значения в правом конце исключаются, поэтому последняя строка, которую мы видим, — 99.

4. Использовать метод tolist()

Можно выделить какой-либо столбец в отдельный список при помощи метода tolist(). Это упростит задачу, если необходимо извлекать данные из столбцов:

Часто бывает нужно получить в виде списка названия столбцов датафрейма. Это тоже можно сделать с помощью метода tolist():

Добавление новых строк и столбцов

Можно добавлять и новые строки: для этого нужно составить словарь с ключами — названиями столбцов. Если вы не укажете значения в каких-то столбцах, они по умолчанию заполнятся пустыми значениями NaN. Добавим еще одну страну под названием Country:

Важно: при добавлении новой строки методом .append() не забывайте указывать параметр ignore_index=True, иначе возникнет ошибка.

Иногда бывает полезно добавить строку с суммой, медианой или средним арифметическим) по столбцу. Сделать это можно с помощью агрегирующих (aggregate (англ.) — группировать, объединять) функций: sum(), mean(), median(). Для примера добавим в конце строку с суммами значений по каждому столбцу:

Удаление строк и столбцов

Удалить отдельные столбцы можно при помощи метода drop() — это целесообразно делать, если убрать нужно небольшое количество столбцов.

В других случаях лучше воспользоваться описанными выше срезами.

Обратите внимание, что этот метод требует дополнительного сохранения через присваивание датафрейма с примененным методом исходному. Также в параметрах обязательно нужно указать axis = 1, который показывает, что мы удаляем именно столбец, а не строку.

Соответственно, задав параметр axis = 0, можно удалить любую строку из датафрейма: для этого нужно написать ее номер в качестве первого аргумента в методе drop(). Удалим последнюю строчку (указываем ее индекс — это будет количество строк):

Копирование датафрейма

Можно полностью скопировать исходный датафрейм в новую переменную. Это пригодится, если нужно преобразовать много данных и при этом работать не с отдельными столбцами, а со всеми данными:

Уникальные значения

Уникальные значения в какой-либо колонке датафрейма можно вывести при помощи метода .unique():

Чтобы дополнительно узнать их количество, можно воспользоваться функцией len():

Подсчет количества значений

Отличается от предыдущего метода тем, что дополнительно подсчитывает количество раз, которое то или иное уникальное значение встречается в колонке, пишется как .value_counts():

Группировка данных

Некоторым обобщением .value_counts() является метод .groupby() — он тоже группирует данные какого-либо столбца по одинаковым значениям. Отличие в том, что при помощи него можно не просто вывести количество уникальных элементов в одном столбце, но и найти для каждой группы сумму / среднее значение / медиану по любым другим столбцам.

1) Сгруппируем данные по новому столбцу баллов и посчитаем, сколько уникальных значений для каждой группы содержится в остальных столбцах. Для этого в качестве агрегирующей функции используем .count():

Получается, что чаще всего страны получали 6 баллов (таких было 49):

2) Получим более содержательный для анализа данных результат — посчитаем сумму значений в каждой группе. Для этого вместо .count() используем sum():

3) Теперь рассчитаем среднее значение по каждой группе, в качестве агрегирующей функции в этом случае возьмем mean():

4) Рассчитаем медиану. Для этого пишем команду median():

Это самые основные агрегирующие функции, которые пригодятся на начальном этапе работы с данными.

Вот пример синтаксиса, как можно сагрегировать значения по группам при помощи сразу нескольких функций:

Сводные таблицы

Бывает, что нужно сделать группировку сразу по двум параметрам. Для этого в Pandas используются сводные таблицы или pivot_table(). Они составляются на основе датафреймов, но, в отличие от них, группировать данные можно не только по значениям столбцов, но и по строкам.

Сортировка данных

Строки датасета можно сортировать по значениям любого столбца при помощи функции sort_values(). По умолчанию метод делает сортировку по убыванию. Например, отсортируем по столбцу значений ВВП на душу населения:

Видно, что самые высокие ВВП совсем не гарантируют высокое место в рейтинге.

Фильтрация

1) Получение строки с конкретным значением какого-либо столбца (выведем строку из датасета для Норвегии):

3) В условиях фильтрации можно использовать не только математические операции сравнения, но и методы работы со строками. Выведем строки датасета, названия стран которых начинаются с буквы F, — для этого воспользуемся методом .startswith():

4) Можно комбинировать несколько условий одновременно, используя логические операторы. Выведем строки, в которых значение ВВП больше 1 и уровень социальной поддержки больше 1,5:

Таким образом, если внутри внешних квадратных скобок стоит истинное выражение, то строка датасета будет удовлетворять условию фильтрации. Поэтому в других ситуациях можно использовать в условии фильтрации любые функции/конструкции, возвращающие значения True или False.

Применение функций к столбцам

Зачастую встроенных функций и методов для датафреймов из библиотеки бывает недостаточно для выполнения той или иной задачи. Тогда мы можем написать свою собственную функцию, которая преобразовывала бы строку датасета как нам нужно, и затем использовать метод .apply() для применения этой функции ко всем строкам нужного столбца.

Рассмотрим пример: напишем функцию, которая преобразует все буквы в строке к нижнему регистру, и применим к столбцу стран и регионов:

Очистка данных

Это целый этап работы с данными при подготовке их к построению моделей и нейронных сетей. Рассмотрим основные приемы и функции.

Этот метод не требует дополнительного присваивания в исходную переменную, чтобы результат сохранился, — поэтому предварительно создадим копию нашего датасета, чтобы не форматировать исходный.

Строки-дубликаты удаляются полностью, таким образом, их количество уменьшается. Чтобы заменить их на пустые, можно использовать параметр inplace = True.

2) Для замены пропусков NaN на какое-либо значение используется функция fillna(). Например, заполним появившиеся после предыдущего пункта пропуски в последней строке нулями:

3) Пустые строки с NaN можно и вовсе удалить из датасета, для этого используется функция dropna() (можно также дополнительно указать параметр inplace = True):

Построение графиков

В Pandas есть также инструменты для простой визуализации данных.

1) Обычный график по точкам.

Построим зависимость ВВП на душу населения от места в рейтинге:

2) Гистограмма.

Отобразим ту же зависимость в виде столбчатой гистограммы:

3) Точечный график.

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

Сохранение датафрейма на компьютер

Сохраним наш датафрейм на компьютер:

Теперь с ним можно работать и в других программах.

Блокнот с кодом можно скачать здесь (формат .ipynb).

Освойте перспективную профессию с нуля: научитесь собирать и организовывать данные, делать выводы на основе их анализа и помогать бизнесу работать эффективнее.

  • 20% теории и 80% практики
  • Постоянный контакт с преподавателями
  • Подготовка к трудоустройству

Мария Жарова

Эксперт по Python и математике для Data Science, ментор одного из проектов на курсе по Data Science.

Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.

Logo Python Course Lesson 4

Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.

One

Строки в Python - упорядоченные неизменяемые последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.

Последовательности в Python
Последовательность(Sequence Type) — итерируемый контейнер, к элементам которого есть эффективный доступ с использованием целочисленных индексов.

Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.

    - изменяемая - неизменяемая - неизменяемая
  1. Строка (str, unicode) - неизменяемая

Строки в одинарных и двойных кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в строки символы кавычек, не используя экранирование. Например вот так(обратите внимание на кавычки внутри строки):

2. С помощью тройных кавычек.
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд. Пример:

Python Строки str создание

Two

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

В таблице перечислены самые часто используемые экранированные последовательности:

"Сырые строки"
Если перед открывающей кавычкой стоит символ 'r' (в любом регистре), то механизм экранирования отключается.
Это может быть нужно, например, в такой ситуации:
str = r'C:\new_file.txt'

Three

Методов для работы со строками довольно много. Может возникнуть вопрос - а как же не запутаться в их многообразии? Ответ на него такой - необходимо структурировать и разбить методы по группам.

Python строки str методы

Итак, строки в Python поддерживают две группы методов:

    ( list ) ( tuple ) ( range ).
  1. Обработки двоичных данных( binary data ) и
  2. Текстовых строк( str ).

x in s; Если элемент присутствует в последовательности, то возвращает True, иначе - False x not in s; Возвращает True, если элемент отсутствует в последовательности. s + t; Конкатенация(сложение) двух последовательностей s * n; Эквивалентно сложению последовательности s с собой n раз s[i]; Возвращает i-й элемент последовательности s[i, j]; Возвращает набор элементов последовательности с индексами из диапазона i

Подытожим
Строки в Python - представители Sequence Type данных. Это значит, что они(наряду со списками, кортежами и диапазонами) поддерживают все операции, приведенные в таблице выше.

Группа 2. Дополнительные методы, которые работают только со строками
Помимо общих операций, которые мы рассмотрели в таблице выше, существуют методы, которые могут быть использованы только для работы с типом str . В ходе урока рассмотрим самые важные и часто используемые из них.

Four

Python строки str конкатенация умножение

Далее будем рассматривать базовые операции, которые можно выполнять со строками. Начнем со сложения и умножения строк. Они, как мы уже выяснили выше, относятся к группе общих операций над последовательностями. Итак:

1. Оператор сложения строк +
+ — оператор конкатенации строк. Он возвращает строку, состоящую из совокупности других строк.
Например:

2. Оператор умножения строк *
* — оператор создает несколько копий строки. Если str это строка, а n целое число, то будет создано n копий строки str .

Five

Срезы так же относятся к группе общих операций - они используются для всех последовательностей, а значит и для строковых переменных. Рассмотрим подробнее, что это такое и с чем его едят.

Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.

Индекс - номер символа в строке (а также в других структурах данных: списках, кортежах). Обратите внимание, что нумерация начинается с 0 . Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1 .

Есть три формы срезов:
1. Самая простая форма среза - взятие одного символа строки - S[i] , где S - строка, i - индекс. Пример:

Python строки str индексация

2. Второй тип - срез с двумя параметрами. Т. е. S[a:b] возвращает подстроку, начиная с символа c индексом a до символа с индексом b , не включая его. Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Пример:

3. Срез с тремя параметрами - S[a:b:d] . Третий параметр задает шаг(как в случае с функцией range ), то есть будут взяты символы с индексами a, a + d, a + 2 * d и т. д. Например, при задании значения третьего параметра, равному 2 , в срез попадет каждый второй символ:

И еще разок: строки в Python - это неизменяемый тип данных!
Любые операции среза со строкой создают новые строки и никогда не меняют исходную строку. В Питоне строки вообще являются неизменяемыми, их невозможно изменить. Можно лишь в старую переменную присвоить новую строку.

Задачи по темам

Специфика типа данных словарь (dict) в Python, характеристики. Примеры использования словарей, задачи с решениями.

Строки как тип данных в Python. Основные методы и свойства строк. Примеры работы со строками, задачи с решениями.

Six

Далее давайте рассмотрим методы второй группы, которые были созданы специально для работы с данными типа str . Полный и актуальный список методов можно посмотреть на странице официальной документации. И как вы сможете заметить, их там немало. Мы же с вами перечислим самые полезные из них и популярные, а так же рассмотрим несколько примеров их использования. Итак, список:

В предыдущих уроках мы учились выводить текст разными способами (а именно - в уроке 11 и уроке 12).

Сегодня усложним структуру вывода строк и текста в Питоне - изучим операторы вывода строк текста в столбик.

Для этого можно использовать команду \n . А можно использовать тройные кавычки. И то, и другое в Python называется "управляющая последовательность". В 15 уроке я более подробно остановлюсь на этих последовательностях. А теперь - только две из них.

Практический пример

Создаем на рабочем столе файл test8.py Пишем в него руками следующий программный код:

Теперь открываем программу PowerShell и прописываем команду python desktop/test8.py

У вас должно получиться следующее:


Как вы можете наблюдать, и в первой части программы и во второй строки могут выводиться в столбик, каждая – с новой строки. Вы можете использовать оба варианта вывода текста, какой вам больше нравится.

Домашнее задание

Составьте программу с перечислением имен учеников в классе или группе ВУЗа. Попробуйте записать ее как с использованием команды \n , так и с использованием тройных кавычек.

Напоминаю про лайфхак в случае постоянных ошибок при вводе текста - нажимаем курсор вправо и можно не вводить путь заново (подробнее ЗДЕСЬ).

В следующем уроке мы освоим более сложные приемы работы с операторами форматирования - перейти в урок 14.

Читайте также: