Python 3: Строки. Функции и методы строк¶
Определение позиции подстроки в строке с помощью функций str.find и str.rfind .
Функция str.find показывает первое вхождение подстроки. Все позиции возвращаются относительно начало строки.
Можно определить вхождение в срезе. первое число показывает начало среза, в котором производится поиск. Второе число — конец среза. В случае отсутствия вхождения подстроки выводится -1.
Функция str.rfind осуществляет поиск с конца строки, но возвращает позицию подстроки относительно начала строки.
Python: Извлекаем имя файла из URL¶
Понадобилось мне отрезать от URL всё, что находится после последнего слэша, т.е.названия файла. URL можеть быть какой угодно. Знаю, что задачу запросто можно решить с помощью специального модуля, но я хотел избежать этого. Есть, как минимум, два способа справиться с поставленным вопросом.
Способ №1¶
Достаточно простой способ. Разбиваем строку по слэшам с помощью функции split() , которая возвращает список. А затем из этого списка извлекаем последний элемент. Он и будет названием файла.
Повторим шаг с присвоением переменной:
Способ №2¶
Второй способ интереснее. Сначала с помощью функции rfind() находим первое вхождение с конца искомой подстроки. Функция возвращает позицию подстроки относительно начала строки. А далее просто делаем срез.
Name already in use
python-summary / docs / strings.rst
- Go to file T
- Go to line L
- Copy path
- Copy permalink
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents
Copy raw contents
Copy raw contents
Python 3: Строки. Функции и методы строк
Другие функции и методы строк
Python: Определение позиции подстроки (функции str.find и str.rfind)
Определение позиции подстроки в строке с помощью функций str.find и str.rfind .
Функция str.find показывает первое вхождение подстроки. Все позиции возвращаются относительно начало строки.
Можно определить вхождение в срезе. первое число показывает начало среза, в котором производится поиск. Второе число — конец среза. В случае отсутствия вхождения подстроки выводится -1.
Функция str.rfind осуществляет поиск с конца строки, но возвращает позицию подстроки относительно начала строки.
Python: Извлекаем имя файла из URL
Понадобилось мне отрезать от URL всё, что находится после последнего слэша, т.е.названия файла. URL можеть быть какой угодно. Знаю, что задачу запросто можно решить с помощью специального модуля, но я хотел избежать этого. Есть, как минимум, два способа справиться с поставленным вопросом.
Достаточно простой способ. Разбиваем строку по слэшам с помощью функции split() , которая возвращает список. А затем из этого списка извлекаем последний элемент. Он и будет названием файла.
Повторим шаг с присвоением переменной:
Второй способ интереснее. Сначала с помощью функции rfind() находим первое вхождение с конца искомой подстроки. Функция возвращает позицию подстроки относительно начала строки. А далее просто делаем срез.
Строки¶
Строки в Python — упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Литералы строк¶
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках¶
Строки в апострофах и в кавычках — одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
Служебные символы¶
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
| Экранированная последовательность | Назначение |
|---|---|
| \n | Перевод строки |
| \a | Звонок |
| \b | Забой |
| \f | Перевод страницы |
| \r | Возврат каретки |
| \t | Горизонтальная табуляция |
| \v | Вертикальная табуляция |
| \N | Идентификатор ID базы данных Юникода |
| \uhhhh | 16-битовый символ Юникода в 16-ричном представлении |
| \Uhhhh… | 32-битовый символ Юникода в 32-ричном представлении |
| \xhh | 16-ричное значение символа |
| \ooo | 8-ричное значение символа |
| \0 | Символ Null (не является признаком конца строки) |
«Сырые» строки¶
Если перед открывающей кавычкой стоит символ r (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, «сырая» строка не может заканчиваться символом обратного слэша. Пути решения:
Строки в тройных апострофах или кавычках¶
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Функции и методы строк¶
Конкатенация (сложение)¶
Дублирование строки¶
Длина строки (функция len)¶
Доступ по индексу¶
Как видно из примера, в Python возможен и доступ по отрицательному индексу, при этом отсчет идет от конца строки.
Извлечение среза¶
Оператор извлечения среза: [X:Y] . X – начало среза, а Y – окончание;
символ с номером Y в срез не входит. По умолчанию первый индекс равен 0 , а второй — длине строки.
Кроме того, можно задать шаг, с которым нужно извлекать срез.
Другие функции и методы строк¶
При вызове методов необходимо помнить, что строки в 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) | Форматирование строки |
Форматирование строк¶
Иногда (а точнее, довольно часто) возникают ситуации, когда нужно сделать строку, подставив в неё некоторые данные, полученные в процессе выполнения программы (пользовательский ввод, данные из файлов и т. д.). Подстановку данных можно сделать с помощью форматирования строк. Форматирование можно сделать с помощью оператора % , либо с помощью метода format .
Если для подстановки требуется только один аргумент, то значение — сам аргумент:
А если несколько, то значениями будут являться все аргументы со строками подстановки (обычных или именованных):
Однако метод format умеет большее. Вот его синтаксис:
Теперь спецификация формата:
Выравнивание производится при помощи символа-заполнителя. Доступны следующие варианты выравнивания:
| Флаг | Значение |
|---|---|
| < | Символы-заполнители будут справа (выравнивание объекта по левому краю) (по умолчанию). |
| > | выравнивание объекта по правому краю. |
| = | Заполнитель будет после знака, но перед цифрами. Работает только с числовыми типами. |
| ^ | Выравнивание по центру. |
Опция «знак» используется только для чисел и может принимать следующие значения:
Что делает str s
A string is a collection of characters. For example, “GeeksforGeeks” is a string. C++ provides primitive data types to create a string. The string can also be initialized at the time of declaration.
Syntax:
string str;
string str = “GeeksforGeeks”
Here, “GeeksforGeeks” is a string literal.
This article shows the difference between the concatenation of the strings using the addition assignment operator (+=) and the addition (+) operator used with strings. Concatenation is the process of joining end-to-end.
Addition assignment (+=) operator
In C++, a string addition assignment operator is used to concatenate one string to the end of another string.
Syntax:
str += value
Here,
value is a string to be concatenated with str.
It appends the value (literal) at the end of the string, without any reassignment.
Example: Below is the C++ program to demonstrate the addition assignment operator.
Python3
Javascript
Addition(+) operator
In C++, a string addition operator is used to concatenate one string to the end of another string. But in this case the after the concatenation of strings, the modified string gets assigned to the string.
Syntax:
str = str + value
Here,
value is a string to be concatenated with str.
It firstly appends the value (literal) at the end of the string and then reassigns it to str.
Example: Below is the C+ program to demonstrate the above approach.
Although both operators when used with strings can be used for the concatenation of strings, there are some differences between them:
Factor 1: Assignment of the modified string:
- The addition assignment operator (+=) concatenates two strings by appending one string at the end of another string.
- The addition operator(+) concatenates two strings by appending one string at the end of the original string and then assigning the modified string to the original string.
Example: Below is the C++ program to demonstrate the above approach.
Factor 2: Operator overloaded functions used:
- The addition assignment operator (+=) concatenates two strings because the operator is overloaded internally.
- In this case, also, the addition operator (+) concatenates two strings because the operator is overloaded internally.
Factor 3: Number of strings concatenated:
- The addition assignment operator (+=) can concatenate two strings at a time in a single statement.
- The addition operator (+) can concatenate multiple strings by using multiple addition (+) operators between the string in a single statement. For example, str = str1 + str2 + str3 + … + strn
Example: In this program, three different statements are required to concatenate three strings; str, str1, str2, and str3 using the assignment addition operator (+=) and a single statement is required to concatenate three strings; str, str1, str2, and str3 using the addition operator (+).