Меню

Python методы строк таблица



Методы строк в Python

Список строковых методов, доступных в Python 3.

Метод

Описание

Примеры

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

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

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

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

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

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

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

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

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

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

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

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

любое другое слово, зарегистрированное через codecs.register_error()

Возвращает 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


3
3
4
ValueError: substring not found

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

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

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

Примечание. Имейте в виду, что под «буквенными» символами понимаются символы, определенные в базе данных Unicode как «буква», т. е., относящиеся к любой из категорий «Lm», «Lt», «Lu», «Ll» и «Lo».

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

К десятичным символам относятся символы, с помощью которых можно формировать числа в десятичной системе счисления. В Unicode эти символы относятся к общей категории «Nd».

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

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

Разницу между методами isdigit() и isdecimal() можно увидеть, если посмотреть, как они работают со вторым примером (u»\u00B2″).

Возвращает True , если строка является допустимым идентификатором, определенным в разделе «Идентификаторы и ключевые слова» документации Python.

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

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

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

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

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

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

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

К непечатаемым символам относятся символы, определенные в базе данных Unicode как «Other» или «Separator», за исключением пробела ASCII (0x20), который считается печатаемым.

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

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

К символам пробелов относятся те, который в базе данных Unicode определены как «Other» или «Separator» и имеют двунаправленное свойство «WS», «B» или «S».

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

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

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

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

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

Если в итерируемом объекте будут любые нестроковые значения, включая байтовые объекты, вы получите 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() .


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

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

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

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

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

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

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

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

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

(‘Homer-Jay’, ‘-‘, ‘Simpson’)
(», », ‘Homer-Jay-Simpson’)

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

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

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

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

[‘Homer’, ‘Jay’, ‘Simpson’]
[‘Homer-Jay’, ‘Simpson’]

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

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

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

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

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

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

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

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

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

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

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

[‘Homer’, ‘Jay’, ‘Simpson’]
[‘Homer’, ‘Jay-Simpson’]
[‘Homer’, », ‘Bart’, »]
[‘Homer’, ‘,Bart’]
[‘Homer’, ‘Bart’, ‘Marge’]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[‘Tea’, », ‘and coffee’, ‘cups’]
[‘Tea\n’, ‘\n’, ‘and coffee\r’, ‘cups\r\n’]

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

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

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

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

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

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

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

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

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

Есть такие комбинации, когда двум разным символам в нижнем регистре соответствует один символ в верхнем, так что «переключение» регистра может дать неожиданный эффект. Примеры можно посмотреть в обсуждении на Stack Overflow.

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

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

Tea And Coffee
Tea And Coffee

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

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

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

Если исходная строка короче указанной длины, «пустота» заполняется нулями ASCII слева.

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

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

Источник

Строковые методы в Python

Андрей Шагин

Sep 3, 2019 · 4 min read

Узнайте, какие встроенные методы Python используются в строковых последовательностях

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

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

Код для этой статьи можно взять из соответствующего репозитория Github Repository.

1. center( )

Метод center() выравнивает строку по центру. Выравнивание выполняется с помощью заданного символа (пробела по умолчанию).

Синтаксис

str. center(length, fillchar) , где:

  • length — это длина строки [ обязательный параметр]
  • fillchar—это символ, задающий выравнивание [на выбор]

Пример

2. count( )

Ме т од count() возвращает счёт или число появлений в строке конкретного значения.

Синтаксис

str. count(value, start, end) , где:

  • value — это подстрока, которая должна быть найдена в строке [ обязательный параметр]
  • start — это начальное значение индекса в строке, где начинается поиск заданного значения [ на выбор]
  • end — это конечное значение индекса в строке, где завершается поиск заданного значения [ на выбор]

Пример

3. find( )

Метод find() возвращает наименьшее значение индекса конкретной подстроки в строке. Если подстрока не найдена, возвращается -1.

Синтаксис

str. find(value, start, end) , где:

  • value или подстрока, которая должна быть найдена в строке [ обязательный параметр]
  • start — это начальное значение индекса в строке, где начинается поиск заданного значения [ на выбор]
  • end — это конечное значение индекса в строке, где завершается поиск заданного значения [ на выбор]

rfind(): метод rfind() такой же, как find(), за исключением того, что он возвращает наибольшее значение индекса подстроки.

Источник

Строки и функции для работы с ними (faq)

С троки в языке программирования Python – это объекты, которые состоят из последовательности символов. Наравне с bool, int и прочих, работа со строковым типом данных является неотъемлемой частью программирования, так как очень редко встречаются приложения, в которых не используется текст.

Вводная информация о строках

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

Что представляют собой строки в Python

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

Литералы строк

Литерал – способ создания объектов, в случае строк Питон предлагает несколько основных вариантов:

Читайте также:  Проанализируйте приведенную ниже таблицу какой вид безработицы фрикционная

>>> ‘string’ # одинарные кавычки ‘string’ >>> «string» # двойные кавычки ‘string’ >>> «»»string»»» ‘string’ >>> »’string»’ ‘string’

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

>>> ‘book «war and peace»‘ # разный тип кавычек ‘book «war and peace»‘ >>> «book ‘war and peace'» # разный тип кавычек «book ‘war and peace'» >>> «book \»war and peace\»» # экранирование кавычек одного типа ‘book «war and peace»‘ >>> ‘book \’war and peace\» # экранирование кавычек одного типа «book ‘war and peace'»

💡 Разницы между строками с одинарными и двойными кавычками нет – это одно и то же

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

Кодировка строк

В третьей версии языка программирования Python все строки представляют собой последовательность Unicode-символов.

В Python 3 кодировка по умолчанию исходного кода – UTF-8. Во второй версии по умолчанию использовалась ASCII. Если необходимо использовать другую кодировку, можно разместить специальное объявление на первой строке файла, к примеру:

Максимальная длина строки в Python

Максимальная длина строки зависит от платформы. Обычно это:

  • 2**31 — 1 – для 32-битной платформы;
  • 2**63 — 1 – для 64-битной платформы;

Константа maxsize , определенная в модуле sys :

>>> import sys >>> sys.maxsize 2147483647

Перенос строк

Перенос строки осуществляется с помощью символа \n :

>>> text = «one\ntwo\nthree» >>> print(text) one two three

Конкатенация строк

Одна из самых распространенных операций со строками – их объединение (конкатенация). Для этого используется знак + , в результате к концу первой строки будет дописана вторая:

>>> s1 = «Hello» + » world» >>> s2 = » world» >>> s1+s2 ‘Hello world’

При необходимости объединения строки с числом его предварительно нужно привести тоже к строке, используя функцию str() :

>>> name = «John» >>> age = 30 >>> «Name: » + name + «, age: » + str(age) ‘Name: John, age: 30’

Сравнение строк

При сравнении нескольких строк рассматриваются отдельные символы и их регистр:

  • цифра условно меньше, чем любая буква из алфавита;
  • алфавитная буква в верхнем регистре меньше, чем буква в нижнем регистре;
  • чем раньше буква в алфавите, тем она меньше;

При этом сравниваются по очереди первые символы, затем – 2-е и так далее.

>>> s1 = «1a» >>> s2 = «aa» >>> s3 = «Aa» >>> s4 = «ba» >>> «1a» > «aa» # сравнение цифры с буквой False >>> «aa» > «Aa» # сравнение регистров True >>> «aa» > «ba» # сравнение букв по алфавитному порядку False >>> «aa»

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

>>> s1 = «Intel» >>> s2 = «intel» >>> s1 == s2 False >>> s1.lower() == s2.lower() True

Пустая строка Python

Объявить пустую строку можно следующими способами:

Как удалить строку в Python

Строки, как и некоторые другие типы данных в языке Python, являются неизменяемыми объектами. При задании нового значения строке просто создается новая, с заданным значением. Для удаления строки можно воспользоваться методом replace() , заменив ее на пустую строку:

Или перезаписать переменную пустой строкой:

Обращение по индексу

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

>>> s = «abcdef» >>> s[0] ‘a’ >>> s[2] ‘c’

Индекс начинается с 0

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

Форматирование строк

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

Оператор %

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

>>> name = «Alex» >>> ‘Hello, %s’ % name ‘Hello, Alex’

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

>>> ‘%d %s, %d %s’ % (6, ‘bananas’, 10, ‘lemons’) ‘6 bananas, 10 lemons’

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

  1. ‘ %d ‘, ‘ %i ‘, ‘ %u – десятичное число;
  2. ‘ %c ‘ – символ, точнее строка из одного символа или число – код символа;
  3. ‘ %r ‘ – строка (литерал Python);
  4. ‘ %s ‘ – строка.

Такой способ форматирования строк называет «старым» стилем, который в Python 3 был заменен на более удобные способы.

str.format()

В Python 3 появился более новый метод форматирования строк, который вскоре перенесли и в Python 2.7. Такой способ избавляет программиста от специального синтаксиса %-оператора. Делается все путем вызова .format() для строковой переменной. С помощью специального символа – фигурных скобок – указывается место для подстановки значения, каждая пара скобок указывает отдельное место для подстановки, значения могут быть разного типа:

>>> print(‘<>‘.format(100)) 100 >>> ‘<0>, <1>, <2>‘.format(‘one’, ‘two’, ‘three’) ‘one, two, three’ >>> ‘<2>, <1>, <0>‘.format(‘one’, ‘two’, ‘three’) ‘three, two, one’

💭 В Python 3 форматирование строк с использованием «нового стиля» является более предпочтительным по сравнению с использованием %-стиля, так как предоставляет более широкие возможности, не усложняя простые варианты использования.

f-строки (Python 3.6+)

В Python версии 3.6 появился новый метод форматирования строк – «f-строки», с его помощью можно использовать встроенные выражения внутри строк:

>>> name = ‘Alex’ >>> f’Hello, !’ ‘Hello, Alex!’

Такой способ форматирования очень мощный, так как дает возможность встраивать выражения:

>>> a = 5 >>> b = 10 >>> f’Five plus ten is and not <2 * (a + b)>.’ ‘Five plus ten is 15 and not 30.’

Таким образом, форматирование с помощью f-строк напоминает использование метода format(), но более гибкое, быстрое и читабельное.

Стандартная библиотека Template Strings

Еще один способ форматирования строк, который появился еще с выходом Python версии 2.4, но так и не стал популярным – использование библиотеки Template Strings. Есть поддержка передачи значения по имени, используется $-синтаксис как в языке PHP:

>>> from string import Template >>> name = «Alex» >>> age = 30 >>> s = Template(‘My name is $name. I’m $age.’) >>> print(s.substitute(name=name, age=age)) My name is Alex. I’m 30

Функции для работы со строками

Для работы со строками в Питоне предусмотрены специальные функции. Рассмотрим их:

Преобразование числового или другого типа к строке:

  • str(n) – преобразование числового или другого типа к строке;
  • len(s) – длина строки;
  • chr(s) – получение символа по его коду ASCII;
  • ord(s) – получение кода ASCII по символу;

Методы для работы со строками

Кроме функций, для работы со строками есть немало методов:

  • find(s, start, end) – возвращает индекс первого вхождения подстроки в s или -1 при отсутствии. Поиск идет в границах от start до end ;
  • rfind(s, start, end) – аналогично, но возвращает индекс последнего вхождения;
  • replace(s, new) – меняет последовательность символов s на новую подстроку new ;
  • split(x) – разбивает строку на подстроки при помощи выбранного разделителя x;
  • join(x) – соединяет строки в одну при помощи выбранного разделителя x;
  • strip(s) – убирает пробелы с обеих сторон;
  • lstrip(s), rstrip(s) – убирает пробелы только слева или справа;
  • lower() – перевод всех символов в нижний регистр;
  • upper() – перевод всех символов в верхний регистр;
  • capitalize() – перевод первой буквы в верхний регистр, остальных – в нижний.

>>> text = «Wikipedia is a Python library that makes it easy to access and parse data from Wikipedia» >>> text.find(«Wikipedia») 0 >>> text.rfind(«Wikipedia») 79 >>> text.replace(«from Wikipedia», «from https://www.wikipedia.org/») ‘Wikipedia is a Python library that makes it easy to access and parse data from https://www.wikipedia.org/’ >>> text.split(» «) [‘Wikipedia’, ‘is’, ‘a’, ‘Python’, ‘library’, ‘that’, ‘makes’, ‘it’, ‘easy’, ‘to’, ‘access’, ‘and’, ‘parse’, ‘data’, ‘from’, ‘Wikipedia’] split_text = text.split(» «) >>> «_».join(split_text) ‘Wikipedia_is_a_Python_library_that_makes_it_easy_to_access_and_parse_data_from_Wikipedia’ >>> text = » test » >>> text.strip() ‘test’ >>> text.lstrip() ‘test ‘ >>> text.rstrip() ‘ test’ >>> text = «Python is a product of the Python Software Foundation» >>> text.lower() ‘python is a product of the python software foundation’ >>> text.upper() ‘PYTHON IS A PRODUCT OF THE PYTHON SOFTWARE FOUNDATION’ >>> text = «python is a product of the python software foundation» >>> text.capitalize() ‘Python is a product of the python software foundation’

Преобразование из строки в другой тип

В Питоне строки можно преобразовывать в другие типы данных:

string to int

Функция int() преобразовывает целое число в десятичной системе, заданное как строка, в тип int:

При необходимости можно указывать систему счисления:

>>> int(«0x12F», base=16) 303

string to list

Самый простой способ преобразования строки в список строк – метод split():

Читайте также:  Русско турецкие войны таблица презентация

>>> ‘one two three four’.split() [‘one’, ‘two’, ‘three’, ‘four’]

При необходимости можно указывать разделитель:

>>> ‘one, two, three, four’.split(‘,’) [‘one’, ‘ two’, ‘ three’, ‘ four’]

string to bytes

Преобразование строкового типа в байтовый выполняется функцией encode() с указанием кодировки:

string to datetime

Строка в дату преобразовывается функцией strptime() из стандартного модуля datetime:

>>> from datetime import datetime >>> print(datetime.strptime(‘Jan 1 2020 1:33PM’, ‘%b %d %Y %I:%M%p’)) 2020-01-01 13:33:00

string to float

Для преобразования строки в число с плавающей точкой используется стандартная функция float:

string to dict

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

string to json

Конвертация объектов Python в объект json выполняется функцией dumps():

>>> import json >>> json.dumps(«hello») ‘»hello»‘

Best practices

Как разбить строку на символы

Разбиение строки на отдельные символы выполняется несколькими способами:

>>> text = «django» # вариант 1 >>> list(text) [‘d’, ‘j’, ‘a’, ‘n’, ‘g’, ‘o’] # вариант 2 >>> [c for c in «text»] [‘t’, ‘e’, ‘x’, ‘t’] # вариант 3 >>> for c in text: print(c) d j a n g o

Как из строки выделить числа

Для извлечения чисел из строки можно воспользоваться методами строк:

>>> str = «h3110 23 cat 444.4 rabbit 11 2 dog» >>> [int(s) for s in str.split() if s.isdigit()] [23, 11, 2]

Данный пример извлекает только целые положительные числа. Более универсальный вариант – регулярные выражения:

>>> str = «h3110 23 cat 444.4 rabbit 11 2 dog» >>> import re >>> re.findall(r’\d+’, str) [‘3110′, ’23’, ‘444’, ‘4’, ’11’, ‘2’]

Как перевернуть строку

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

С помощью среза – самый быстрый способ:

Использование reversed() и str.join() :

Как удалить последний символ в строке

Как и в предыдущем случае – чтобы убрать последний символ наиболее простым и быстрым вариантом будет использование среза:

>>> «Some text1″[:-1] ‘Some text’

Как убрать пробелы из строки

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

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

>>> » Some text «.strip() ‘Some text’

2. Удалить со строки все пробелы:

>>> » So me t e x t «.replace(‘ ‘, ») ‘Sometext’

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

Источник

Основные методы строк

Как мы уже неоднократно говорили, в Python строки являются объектами и у этих объектов есть методы, то есть, функции, выполняющие определенные действия:

Для примера, предположим, у нас имеется такая, уже классическая строка:

и мы собираемся для нее вызвать метод

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

Вот по такому синтаксису вызываются различные методы строк. Причем, сама переменная string продолжает ссылается на ту же самую неизмененную строку «Hello World!». Как мы с вами говорили на предыдущем занятии, строки – это неизменяемые объекты, поэтому метод upper возвращает новую строку с заглавными буквами, не меняя прежней.

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

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

Также этот метод мы можем вызвать непосредственно у строкового литерала:

Так тоже можно делать.

Ну и раз уж мы затронули метод upper, который переводит буквы в верхний регистр, то отметим противоположный ему метод:

который, наоборот, преобразует все буквы в строчные. Например:

возвращает строку «hello world!». Соответственно, сама строка здесь остается прежней, измененным является новый строковый объект, который и возвращает метод lower. По такому принципу работают все методы при изменении строк. Следующий метод

String.count(sub[, start[, end]])

возвращает число повторений подстроки sub в строке String. Два необязательных аргумента:

  • start – индекс, с которого начинается поиск;
  • end – индекс, которым заканчивается поиск.

В самом простом случае, мы можем для строки

определить число повторений сочетаний «ra»:

получим значение 2 – именно столько данная подстрока встречается в нашей строке.

Теперь предположим, что мы хотим начинать поиск с буквы k, имеющей индекс 4.

Тогда метод следует записать со значением start=4:

и мы получим значение 1. Далее, укажем третий аргумент – индекс, до которого будет осуществляться поиск. Предположим, что мы хотим дойти до 10-го индекса и записываем:

и получаем значение 0. Почему? Ведь на индексах 9 и 10 как раз идет подстрока «ra»? Но здесь, также как и в срезах, последний индекс исключается из рассмотрения. То есть, мы говорим, что нужно дойти до 10-го, не включая его. А вот если запишем 11:

то последнее включение найдется.

String.find(sub[, start[, end]])

возвращает индекс первого найденного вхождения подстроки sub в строке String. А аргументы start и end работают также как и в методе count. Например:

вернет 1, т.к. первое вхождение «br» как раз начинается с индекса 1. Поставим теперь значение start=2:

и поиск начнется уже со второго индекса. Получим значение 8 – индекс следующего вхождения подстроки «br». Если мы укажем подстроку, которой нет в нашей строке:

то метод find возвращает -1. Третий аргумент end определяет индекс до которого осуществляется поиск и работает также как и в методе count.

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

String.rfind(sub[, start[, end]])

который во всем остальном работает аналогично find. Например:

возвратит 8 – первое вхождение справа.

Наконец, третий метод, аналогичный find – это:

String.index(sub[, start[, end]])

Он работает абсолютно также как find, но с одним отличием: если указанная подстрока sub не находится в строке String, то метод приводит к ошибке:

тогда как find возвращает -1. Спрашивается: зачем нужен такой ущербный метод index? В действительности такие ошибки можно обрабатывать как исключения и это бывает полезно для сохранения архитектуры программы: когда неожиданные ситуации обрабатываются единым образом в блоке исключений. Но, обо всем этом речь пойдет позже.

String.replace(old, new, count=-1)

Выполняет замену подстрок old на строку new и возвращает измененную строку. Например, в нашей строке, мы можем заменить все буквы a на o:

на выходе получим строку «obrokodobro». Или, так:

Используя этот метод, можно выполнять удаление заданных фрагментов, например, так:

Третий необязательный аргумент задает максимальное количество замен. Например:

Заменит только первые две буквы a: «msg.replace(«a», ‘o’, 2)». При значении -1 количество замен неограниченно.

Следующие методы позволяют определить: из каких символов состоит наша строка. Например, метод

возвращает True, если строка целиком состоит из букв и False в противном случае. Посмотрим как он работает:

вернет True, т.к. наша строка содержит только буквенные символы. А вот для такой строки:

мы получим False, т.к. имеется символ пробела.

возвращает True, если строка целиком состоит из цифр и False в противном случае. Например:

т.к. имеется символ точки, а вот так:

получим значение True. Такая проверка полезна, например, перед преобразованием строки в целое число:

возвращает новую строку с заданным числом символов width и при необходимости слева добавляет символы fillchar:

Получаем строку « abc» с двумя добавленными слева пробелами. А сама исходная строка как бы прижимается к правому краю. Или, можно сделать так:

Получим строку «—abc». Причем вторым аргументом можно писать только один символ. Если записать несколько, то возникнет ошибка:

Если ширина width будет меньше длины строки:

то ничего не изменится. Аналогично работает метод

который возвращает новую строку с заданным числом символов width, но добавляет символы fillchar уже справа:

возвращает коллекцию строк, на которые разбивается исходная строка String. Разбивка осуществляется по указанному сепаратору sep. Например:

Мы здесь разбиваем строку по пробелам. Получаем коллекцию из ФИО. Тот же результат будет и при вызове метода без аргументов, то есть, по умолчанию он разбивает строку по пробелам:

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

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

возвращает строку из объединенных элементов списка, между которыми будет разделитель String. Например:

получаем строку «1, 2, 3, 4, 5, 6». Или так, изначально была строка:

и мы хотим здесь вместо пробелов поставить запятые:

Теперь fio2 ссылается на строку с запятыми «Иванов,Иван,Иванович».

удаляет пробелы и переносы строк в начале и конце строки. Например:

возвращает строку «hello world». Аналогичные методы:

String.rtrip() и String.ltrip()

удаляют пробелы и переносы строк только справа и только слева.

Источник

Adblock
detector