Найти в Дзене
InformaticsEasy AI

Работа со строками. Python.

Оглавление

Здравствуйте.

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

Итак, начнем. Строки - это тип данных, который считается неизменяемым, т.е. его нельзя изменить, точнее нельзя изменить его (или ее) нельзя изменить. Можно заменить значение строковой переменной, но не содержание.

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

Методы строк.

Сначала выведем все методы небольшой программой.

Получаем вот такой список: capitalize, casefold, center, count, encode, endswith, expandtabs, find, format, format_map, index, isalnum, isalpha, isascii, isdecimal, isdigit, isidentifier, islower, isnumeric, isprintable, isspace, istitle, isupper, join, ljust, lower, lstrip, maketrans, partition, removeprefix, removesuffix, replace, rfind, rindex, rjust, rpartition, rsplit, rstrip, split, splitlines, startswith, strip, swapcase, title, translate, upper, zfill. Начнем по порядку (python v.3.10.4).

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

-2

capitalize

Данный метод делает первую буквы заглавной, остальные в строке строчные.

-3

casefold

Данный метод приводит все к нижнему регистру для сравнения строк.

-4

В отличие от метода lower метод casefold работает только с символами в кодировке Unicode.

center

Данный метод делает весьма удобную вешь при решении задач. Он заполняет пустые места в строке, указанным символом. Есть 2 параметра: длина, к которой нужно привести и символ (строго один), которой нужно заполнить.

-5

count

Данный метод подсчитывает количество вхождений указанной подстроки в строке. Имеет параметры:

  1. строка, которую ищем
  2. начало, откуда начинаем искать
  3. конец, до какого символа будем искать
-6

encode

Переводит строку в двоичный код. Имеет 2 параметра:

  1. кодировка (строка), в которую необходимо перевести
  2. ошибка (строка) - схема обработки ошибок, используемая для кодирования ошибок. По умолчанию установлено значение «строгий», что означает, что ошибки кодирования вызывают ошибку UnicodeEncodeError. Другими возможными значениями являются «ignore», «replace» и «xmlcharrefreplace», а также любое другое имя, зарегистрированное с помощью codecs.register_error, которое может обрабатывать ошибки UnicodeEncodeErrors.
-7

endswith

Этот метод возвращает False или True, в зависимости от того, оканчивается ли строка на указанную подстроку.

Имеет 3 параметра:

  1. строка, по которой проверяем заканчивается ли строка. Либо здесь можно указать кортеж, в которых указывается возможные окончания.
  2. начало, откуда начинаем проверять
  3. конец, момент до которого проверяем
-8

expandtabs

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

-9

find

Метод ищет первое вхождение подстроки в строке. Имеет 3 параметра:

  1. подстрока, которую ищем
  2. начало
  3. конец

Возвращет позицию в строке или -1 если не найдено.

-10

format

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

-11

Либо использовать словарь, чтобы подставлять значения ключей.

-12

Использование форматирования типов

-13

format_map

Здесь почти та же ситуация, используется словарь.

-14

index

Производит поиск подстроки в строке. Отличие от метода find в том, что в случае не обнаружения, выдается ошибка: ValueError: substring not found.

Имеет 3 параметра:

  1. подстрока, которую ищем
  2. начало
  3. конец
-15

isalnum

Проверяет является ли строка, состоящей из букв и цифр. Возвращает False или True.

-16

isalpha

Проверяет является ли строка, состоящей из букв. Возвращает False или True.

-17

isascii

Проверяет является ли строка, состоящей из символов таблицы ASCII. Возвращает False или True.

-18

isdecimal

Проверяет является ли строка, состоящей из цифр. Возвращает False или True.

-19

isdigit

Проверяет является ли строка, состоящей из цифр. Возвращает False или True.

-20

isidentifier

Проверяет является ли строка, возможным идентификатором. Возвращает False или True.

-21

islower

Проверяет является ли строка, записанная только строчными символами. Возвращает False или True.

-22

isnumeric

Проверяет является ли строка, состоящей из цифр. Возвращает False или True.

-23

Разница между тремя методами isdigit, isnumeric, isdecimal:

str.isdecimal() Возвращает True, если все символы в строке являются десятичными символами и имеется хотя бы один символ, в противном случае — False. Десятичные символы — это те символы, которые можно использовать для формирования чисел по основанию 10, например U+0660, АРАБСКАЯ-ИНДИЙСКАЯ ЦИФРА НОЛЬ. Формально десятичный символ — это символ общей категории Юникода «Nd».
str.isdigit() Возвращает True, если все символы в строке являются цифрами и имеется хотя бы один символ, в противном случае — False. Цифры включают десятичные символы и цифры, требующие специальной обработки, например цифры верхнего индекса совместимости. Сюда входят цифры, которые нельзя использовать для образования чисел по основанию 10, например числа Харости. Формально цифра — это символ, имеющий значение свойства Numeric_Type=Digit или Numeric_Type=Decimal.
str.isnumeric() Возвращает True, если все символы в строке являются цифрами и имеется хотя бы один символ, в противном случае — False. К цифровым символам относятся символы цифр и все символы, имеющие свойство числового значения Юникода, например U+2155, ОБЫЧНАЯ ДРОБЬ ОДНА ПЯТАЯ. Формально числовыми символами являются символы со значением свойства Numeric_Type=Digit, Numeric_Type=Decimal или Numeric_Type=Numeric.

isprintable

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

-24

isspace

Проверяет является ли строка, состоящей из пробельных символов. Возвращает False или True.

-25

istitle

Проверяет начинается ли строка с заглавной буквы. Возвращает False или True.

-26

isupper

Проверяет является ли строка, состоящей из заглавных букв. Возвращает False или True.

-27

join

Метод предназначенный для итерируемых объектов, т.е. те, которые состоят из элементов: списки, кортежи.

-28

Примечание, элементы объекта должны быть строкой.

ljust

Заполняет слева указанным символом до указанной длины.

Имеет 2 параметра:

  1. длина выходной строки
  2. символом, которым нужно заполнить
-29

lower

Переводит строку в нижний регистр, все символы будут маленькими.

-30

lstrip

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

-31

maketrans

Возвращает таблицу пакетной замены символов для str.translate().

-32

partition

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

-33

removeprefix

Удаляет начало строки, префикс.

-34

removesuffix

Удаляет конец строки, смотри пример-аналогию removeprefix.

replace

Заменяет в строке подстроку1 на построку 2. Имеет 3 параметра:

  1. подстрока1, которую ищем
  2. подстрока2, на которую заменяем
  3. количество замен
-35

rfind

Поиск символа с конца строки. Возвращает индекс вхождения или -1, если не найдено. Имеет 3 параметра:

  1. подстрока, которую ищем
  2. начало
  3. конец
-36

rindex

Поиск символа с конца строки. Возвращает индекс вхождения или ошибку (ValueError: substring not found), если не найдено. Имеет 3 параметра:

  1. подстрока, которую ищем
  2. начало
  3. конец
-37

rjust

Заполняет слева указанным символом до указанной длины.

Имеет 2 параметра:

  1. длина выходной строки
  2. символом, которым нужно заполнить
-38

rpartition

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

-39

rsplit

Разбивает строку по подстроке и превращает в список. Разбивание происходит справа. Имеет 2 параметра:

  1. подстрока, по которой бедет разбита строка
  2. количество делений
-40

rstrip

Удаляет пробелы справа.

-41

split

Разбивает строку по подстроке и превращает в список. Разбивание происходит справа. Имеет 2 параметра:

  1. подстрока, по которой бедет разбита строка
  2. количество делений
-42

Различие split и rsplit на примере:

-43

splitlines

Разбивает строку по \n.

-44

startswith

Этот метод возвращает False или True, в зависимости от того, оканчивается ли строка на указанную подстроку.

Имеет 3 параметра:

  1. строка, по которой проверяем заканчивается ли строка. Либо здесь можно указать кортеж, в которых указывается возможные окончания.
  2. начало, откуда начинаем проверять
  3. конец, момент до которого проверяем
-45

strip

Удаляет пробелы спереди и сзади.

-46

swapcase

Меняет регистр букв, маленькие делает заглавными и наоборот.

-47

title

Каждый первый символ слова в строке делает с заглавной буквы.

-48

translate

Смотри maketrans

upper

Делает все символы в строке в верхнем регистре (заглавными буквами).

-49

zfill

Заполняет нулями строку до указанной длины.

-50

Соединение методов

Данные методы можно применять друг за другом.

-51

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

Конкатенация строк по-другому называется склейка. Т.е. допустим нам нужно соединить 2 типа данных: строку и число. Для этого используется символ "+".

-52

Умножение строк

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

-53
-54

Методы которые можно применять к строкам

len - Возвращает длину строки.

dir - Возвращает список методов строки

type - возвращает тип объекта

id - возвращает id объекта

-55

Преобразование типов

str - преобзование объекта к типу строка

int - преобразование строки к целому типу (строка должна состоять только из цифр)

float - преобразование строки к дробному типу (строка должна состоять только из цифр и одного символа ".")

list - преобразование строки в список по символам

-56

Работа с таблицей ASCII.

ord - преобразование символа в код таблицы ASCII.

chr - преобразование кода таблицы ASCII в символ.

-57

Выполнение кода в виде строки

eval - вычисляет строковое выражение

exec - выполняет строковое выражение

-58

Итераторы для строк

reversed - переворачивает строку и возвращает итератор

sorted - сортирует строку и возвращает итератор

-59

Индексы и срезы

Индексы

Так как строка - это итерируемый объект, т.е. который можно разобрать посимвольно через цикл for, то у него есть такое понятие как индексы. Каждый символ имеет свой индекс. Индексация начинается с нуля. Если идти с конца, то индексация начинается с -1.

s[0] - первый символ строки

s[1] - второй символ строки

s[-1] - последний символ строки

s[-2] - предпоследний символ строки

Разобрать строку через цикл for

-60

Cрезы

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

-61

Прочие возможности для строк

f-строки или format

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

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

-62

Небольшое дополнение по выравниванию

-63

r-строки - сырые строки

Данный вид строк применяется когда нужно выключить экранирование. Опять жа для понимания приведу пару примеров.

-64

Оператор % в строках

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

-65

Фух. На этом все. Примеры и разборы задач будут в другой статье.

Жду ваших комментариев и лайков (жмем не жалеем).

Понравилась статья - подписывайся.

Мои курсы по информатике, математике и Python.

Курсы по технологиям: RabbitMQ, Redis, MongoDB и прочее.

Также приглашаю присоединится к моему сообществу в VK и каналу YouTube.