Как найти конец строки python

Функции определяющие и обрабатывающие начало и конец строки


Содержание

  • 1. Функция str.endswith(). Проверка окончания строки заданным суффиксом
  • 2. Функция str.startswith(). Проверка начала строки заданным префиксом
  • 3. Функция str.lstrip(). Вернуть копию строки без заданных первых символов
  • 4. Функция str.rstrip(). Удаление символов от конца строки
  • 5. Функция str.strip(). Получить строку с удаленными начальными и конечными символами
  • Связанные темы

Поиск на других ресурсах:

1. Функция str.endswith(). Проверка окончания строки заданным суффиксом

Функция endswith() определяет, оканчивается ли строка указанным суффиксом. Согласно документации Python общая форма использования функции следующая:

f_is = s.endswith(suffix[, start[, end]])

где

  • s – исходная строка;
  • f_is – результат логического типа. Если строка s завершается заданным суффиксом suffix, то f_is = True. В противном случае f_is = False;
  • suffix – заданный суффикс или кортеж суффиксов, которые проверяются на наличие в строке s;
  • start, end – соответственно начало и конец подстроки, получаемой из строки s. Если заданы необязательные параметры start, end то фрагмент этой строки рассматривается.

Пример.

# Функция str.endswith()

# 1. Вызов с одним заданным суффиксом
s1 = "abcdef"
f1 = s1.endswith('ef') # f1 = True

# указать суффикс
suffix = "cdef"
# поиск в подстроке 'bcd'
f2 = s1.endswith(suffix, 1, 3) # f2 = false

# поиск в подстроке 'cdef'
f3 = s1.endswith(suffix, 2, len(s1)) # f3 = True

# 2. Вызов с кортежем суффиксов
# Проверка, завершается ли заданная строка кортежем суффиксов
arr = ( 'ab', 'zz', 'w' ) # сформировать кортеж

# некоторая строка
s2 = "abcdej zz"

f_is = s2.endswith(arr) # f_is = True

 

2. Функция str.startswith(). Проверка начала строки заданным префиксом

Функция str.startswith() проверяет, начинается ли строка заданным префиксом. Общая форма использования функции следующая:

f = str.startswith(prefix[, start[, end]])

где

  • f – результат логического типа. Если префикс в строке найден, то f = True (функция возвращает True). В противном случае f = False;
  • str – строка, в которой происходит поиск заданного префикса prefix;
  • prefix – заданный префикс;
  • start, end – необязательные параметры, задающие диапазон индексов строки str который пересматривается на наличие префикса. Фактически рассматривается диапазон индексов, находящихся в границах [start, end-1].

Пример.

# Функция str.startswith() - проверка префикса строки

# Случай 1. Не заданы параметры start, end
s = 'Hello world!'
f = s.startswith('He') # f = True
f = str.startswith(s, 'Hello') # f = True
f = s.startswith('abc') # f = False

# Случай 2. Задан параметр start
s = 'abcde'
f = s.startswith('bcd', 1) # f = True
f = s.startswith('bcd', 2) # f = False

f = 'jklmn'.startswith('+++', 6) # f = False

# Случай 3. Заданы оба параметра start, end
s = '0123456789'
f = s.startswith('234', 2, 5) # f = True
f = s.startswith('234', 2, 4) # f = False
f = s.startswith('234', 2, 7) # f = True

f = s.startswith('345', 1, 8) # f = False

# Случай 4. Пустая строка, пустой префикс
s = ''
f = str.startswith(s, '', 0, len(s)) # f = True


 

3. Функция str.lstrip(). Вернуть копию строки без заданных первых символов

Функция str.lstrip() возвращает копию строки, в которой удалены заданные начальные символы. Согласно документации Python общая форма использования функции следующая:

s2 = s1.lstrip([chars])

где

  • s1 – строка-оригинал, в которой будет осуществлена попытка удалить начальные символы из набора chars;
  • s2 – строка-результат с удаленными начальными символами;
  • chars – множество символов, которые рассматриваются как таковые, что требуют удаления. Если при просмотре строки s1 справа встречается символ, который не входит в множество chars, то удаление начальных символов прекращается. Если параметр chars не задан, то по умолчанию принимается символ пробел.

Пример.

# Функция str.lstrip() - вернуть строку без заданных первых символов

# 1. Вызов без указания множества символов, берется ко вниманию пробел
s1 = ' abcdef '
s2 = s1.lstrip() # s2 = 'abcdef ' - удаленные первые символы пробел

s1 = '+ abcdef'
s2 = str.lstrip(s1) # s2 = '+ abcdef' - символ пробел не удаляется

# 2. Вызов с указанием множества символов
s1 = 'sdefabcdef'
s2 = s1.lstrip('defs') # s2 = 'abcdef' - удалены символы 'd','е','f','s'

s2 = '+--+-abcdef'.lstrip('-+:;') # s2 = 'abcdef'

 

4. Функция str.rstrip(). Удаление символов от конца строки

Функция str.rstrip() возвращает копию строки, в которой удалены заданные конечные символы. Согласно документации Python общая форма использования функции следующая:

s2 = s1.rstrip([chars])

где

  • s1 – строка-оригинал, в которой будет осуществлена попытка удалить конечные символы из набора chars;
  • s2 – строка-результат с удаленными конечными символами;
  • chars – множество символов, которые рассматриваются как таковые, что требуют удаления. Если при просмотре строки s1 от конца до начала встречается символ, который не входит в множество chars, то удаление конечных символов прекращается. Если параметр chars не задан, то по умолчанию принимается символ пробел.

Пример.

# Функция str.rstrip() - вернуть строку без конечных заданных символов

# 1. Вызов функции без параметров
s1 = 'abcdef '
s2 = s1.rstrip() # s2 = 'abcdef ' - удаленные конечные символы пробел

s1 = 'abcdef +'
s2 = str.rstrip(s1) # s2 = 'abcdef +' - символ пробел не удаляется

# 2. Вызов с указанием множества символов
s1 = 'abcdefdfes'
s2 = s1.rstrip('defs') # s2 = 'abc' - удаленные конечные символы 'd','е','f','s'

s2 = 'abcdef+--++-'.rstrip('-+:;') # s2 = 'abcdef'

 

5. Функция str.strip(). Получить строку с удаленными начальными и конечными символами

Функция str.strip() возвращает копию строки с удаленными начальными и конечными заданными символами. Согласно документации Python общая форма использования функции следующая:

s2 = s1.strip([chars])

где

  • s1 – строка-оригинал, которая обрабатывается;
  • s2 – строка-копия, которая есть результатом работы функции;
  • chars – набор символов, которые нужно удалить. Если значение chars отсутствуюет, то, по умолчанию удаляются символы пробел. Параметр chars есть множеством, поэтому здесь порядок следования символов не имеет значения. Если при просмотре от начала или от конца строки встречаются символы из набора chars, то происходит их удаление. Символы удаляются до тех пор, пока не встретится символ, которого нет в наборе chars.

Пример.

# Функция str.strip() - удаляет заданные символы от начала и от конца строки

# Случай 1. Параметр chars не задан - удаляются пробелы
s1 = ' abcd jkl '
s2 = str.strip(s1) # s2 = 'abcd jkl'

s1 = ' ' # в строке все символы пробел
s2 = s1.strip() # s2 = '' - пустая строка

# Случай 2. Параметр chars задан
s1 = '+=-=+abcd+-='
s2 = s1.strip('+-=') # s2 = 'abcd'
s2 = s1.strip('=') # s2 = '+=-=+abcd+-'
s2 = '..... ,,...This is a string...'.strip(',. ') # s2 = 'This is a string'

 


Связанные темы

  • Функции для работы со строками, определяющие особенности строки
  • Функции поиска и замены подстроки в строке
  • Функции обработки строки в соответствии с форматом или правилом кодирования. Стили форматирования

 


Базовые операции¶

# Конкатенация (сложение)
>>> s1 = 'spam'
>>> s2 = 'eggs'
>>> print(s1 + s2)
'spameggs'

# Дублирование строки
>>> print('spam' * 3)
spamspamspam

# Длина строки
>>> len('spam')
4

# Доступ по индексу
>>> S = 'spam'
>>> S[0]
's'
>>> S[2]
'a'
>>> S[-2]
'a'

# Срез
>>> s = 'spameggs'
>>> s[3:5]
'me'
>>> s[2:-2]
'ameg'
>>> s[:6]
'spameg'
>>> s[1:]
'pameggs'
>>> s[:]
'spameggs'

# Шаг, извлечения среза
>>> s[::-1]
'sggemaps'
>>> s[3:5:-1]
''
>>> s[2::2]
'aeg'

Другие функции и методы строк¶

# Литералы строк
S = 'str'; S = "str"; S = '''str'''; S = """str"""
# Экранированные последовательности
S = "snptanbbb"
# Неформатированные строки (подавляют экранирование)
S = r"C:tempnew"
# Строка байтов
S = b"byte"
# Конкатенация (сложение строк)
S1 + S2
# Повторение строки
S1 * 3
# Обращение по индексу
S[i]
# Извлечение среза
S[i:j:step]
# Длина строки
len(S)
# Поиск подстроки в строке. Возвращает номер первого вхождения или -1
S.find(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или -1
S.rfind(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер первого вхождения или вызывает ValueError
S.index(str, [start],[end])
# Поиск подстроки в строке. Возвращает номер последнего вхождения или вызывает ValueError
S.rindex(str, [start],[end])
# Замена шаблона
S.replace(шаблон, замена)
# Разбиение строки по разделителю
S.split(символ)
# Состоит ли строка из цифр
S.isdigit()
# Состоит ли строка из букв
S.isalpha()
# Состоит ли строка из цифр или букв
S.isalnum()
# Состоит ли строка из символов в нижнем регистре
S.islower()
# Состоит ли строка из символов в верхнем регистре
S.isupper()
# Состоит ли строка из неотображаемых символов (пробел, символ перевода страницы ('f'), "новая строка" ('n'), "перевод каретки" ('r'), "горизонтальная табуляция" ('t') и "вертикальная табуляция" ('v'))
S.isspace()
# Начинаются ли слова в строке с заглавной буквы
S.istitle()
# Преобразование строки к верхнему регистру
S.upper()
# Преобразование строки к нижнему регистру
S.lower()
# Начинается ли строка S с шаблона str
S.startswith(str)
# Заканчивается ли строка S шаблоном str
S.endswith(str)
# Сборка строки из списка с разделителем S
S.join(список)
# Символ в его код ASCII
ord(символ)
# Код ASCII в символ
chr(число)
# Переводит первый символ строки в верхний регистр, а все остальные в нижний
S.capitalize()
# Возвращает отцентрованную строку, по краям которой стоит символ fill (пробел по умолчанию)
S.center(width, [fill])
# Возвращает количество непересекающихся вхождений подстроки в диапазоне [начало, конец] (0 и длина строки по умолчанию)
S.count(str, [start],[end])
# Возвращает копию строки, в которой все символы табуляции заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается равным 8 пробелам
S.expandtabs([tabsize])
# Удаление пробельных символов в начале строки
S.lstrip([chars])
# Удаление пробельных символов в конце строки
S.rstrip([chars])
# Удаление пробельных символов в начале и в конце строки
S.strip([chars])
# Возвращает кортеж, содержащий часть перед первым шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки
S.partition(шаблон)
# Возвращает кортеж, содержащий часть перед последним шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий две пустых строки, а затем саму строку
S.rpartition(sep)
# Переводит символы нижнего регистра в верхний, а верхнего – в нижний
S.swapcase()
# Первую букву каждого слова переводит в верхний регистр, а все остальные в нижний
S.title()
# Делает длину строки не меньшей width, по необходимости заполняя первые символы нулями
S.zfill(width)
# Делает длину строки не меньшей width, по необходимости заполняя последние символы символом fillchar
S.ljust(width, fillchar=" ")
# Делает длину строки не меньшей width, по необходимости заполняя первые символы символом fillchar
S.rjust(width, fillchar=" ")

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

S.format(*args, **kwargs)

Примеры¶

Python: Определение позиции подстроки (функции str.find и str.rfind)¶

Определение позиции подстроки в строке с помощью функций str.find и str.rfind.

In [1]: str = 'ftp://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

Функция str.find показывает первое вхождение подстроки. Все позиции возвращаются относительно начало строки.

In [2]: str.find('/')
Out[2]: 4

In [3]: str[4]
Out[3]: '/'

Можно определить вхождение в срезе. первое число показывает начало среза, в котором производится поиск. Второе число — конец среза. В случае отсутствия вхождения подстроки выводится -1.

In [4]: str.find('/', 8, 18)
Out[4]: -1

In [5]: str[8:18]
Out[5]: '.dropbox.c'

In [6]: str.find('/', 8, 22)
Out[6]: 20

In [7]: str[8:22]
Out[7]: '.dropbox.com/u'

In [8]: str[20]
Out[8]: '/'

Функция str.rfind осуществляет поиск с конца строки, но возвращает позицию подстроки относительно начала строки.

In [9]: str.rfind('/')
Out[9]: 40

In [10]: str[40]
Out[10]: '/'

Python: Извлекаем имя файла из URL¶

Понадобилось мне отрезать от URL всё, что находится после последнего слэша, т.е.названия файла. URL можеть быть какой угодно. Знаю, что задачу запросто можно решить с помощью специального модуля, но я хотел избежать этого. Есть, как минимум, два способа справиться с поставленным вопросом.

Способ №1¶

Достаточно простой способ. Разбиваем строку по слэшам с помощью функции split(), которая возвращает список. А затем из этого списка извлекаем последний элемент. Он и будет названием файла.

In [1]: str = 'http://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

In [2]: str.split('/')
Out[2]: ['http:', '', 'dl.dropbox.com', 'u', '7334460', 'Magick_py', 'py_magick.pdf']

Повторим шаг с присвоением переменной:

In [3]: file_name = str.split('/')[-1]

In [4]: file_name
Out[4]: 'py_magick.pdf'

Способ №2¶

Второй способ интереснее. Сначала с помощью функции rfind() находим первое вхождение с конца искомой подстроки. Функция возвращает позицию подстроки относительно начала строки. А далее просто делаем срез.

In [5]: str = 'http://dl.dropbox.com/u/7334460/Magick_py/py_magick.pdf'

In [6]: str.rfind('/')
Out[6]: 41

Делаем срез:

In [7]: file_name = str[42:]

In [8]: file_name
Out[8]: 'py_magick.pdf'

Содержание

  1. Введение
  2. Метод len() в Python для определения длины строки
  3. Методы для изменения регистра символов
  4. Метод lower() в Python — возвращает копию строки в нижнем регистре
  5. Метод upper() в Python — возвращает копию строки в верхнем регистре
  6. Метод capitalize() в Python — возвращает копию строки с первым символом в верхнем регистре
  7. Метод title() в Python — возвращает копию строки, в которой каждое слово начинается с заглавной буквы
  8. Метод swapcase() в Python — возвращает копию строки, в которой все символы верхнего регистра преобразованы в нижний регистр, и наоборот
  9. Методы для проверки регистра символов
  10. Метод islower() в Python — проверяет, содержатся ли в строке только символы в нижнем регистре
  11. Метод isupper() в Python — проверяет, содержатся ли в строке только символы в верхнем регистре
  12. Метод istitle() в Python — проверяет, записаны ли в строке слова с заглавных букв, а остальные символы слова — в нижнем регистре.
  13. Методы удаления пробелов и других разделителей
  14. Метод strip() в Python — возвращает копию строки с удаленными символами из начала и конца строки, указанными в аргументе
  15. Метод lstrip() в Python — возвращает копию строки с удаленными символами из начала строки, указанными в аргументе
  16. Метод rstrip() в Python — возвращает копию строки с удаленными символами из конца строки, указанными в аргументе
  17. Методы замены подстрок
  18. Метод replace() в Python — возвращает копию строки, в которой все вхождения одной подстроки заменены на другую подстроку
  19. Метод translate() в Python — возвращает копию строки, в которой некоторые указанные символы заменены на другие символы или удалены
  20. Методы разделения и объединения строк
  21. Метод split() в Python — возвращает список подстрок, разделенных указанным разделителем
  22. Метод join() в Python — возвращает строку, объединяя элементы итерируемого объекта в качестве разделителя между ними
  23. Методы проверки начала и конца строки
  24. Метод startswith() в Python — проверяет, начинается ли строка с указанного префикса, с возможностью указания начального и конечного индексов
  25. Метод endswith() в Python — проверяет, заканчивается ли строка заданным суффиксом, с возможностью указания начального и конечного индексов
  26. Методы поиска подстрок
  27. Метод find() в Python — возвращает индекс последнего вхождения подстроки в строке, или -1, если подстрока не найдена
  28. Метод index() в Python — возвращает индекс первого вхождения подстроки в строку, или вызывает ValueError, если подстрока не найдена
  29. Метод count() в Python — возвращает количество непересекающихся вхождений подстроки в строке
  30. Методы in, not in в Python для проверки наличия подстрок
  31. Методы форматирования строк
  32. Метод format() в Python — возвращает отформатированную строку, заменяя в ней соответствующие метки значениями
  33. Метод format_map() в Python — возвращает отформатированную строку, заменяя в ней метки значениями из указанного словаря
  34. f-строки (f-strings) в Python
  35. Методы выравнивания строк
  36. Метод center() в Python — возвращает копию строки, выровненной по центру на заданную ширину, с возможностью указать символ заполнения
  37. Метод ljust() в Python — возвращает копию строки, выровненной по левому краю на заданную ширину, с возможностью указать символ заполнения
  38. Метод rjust() в Python — возвращает копию строки, выровненной по правому краю на заданную ширину, с возможностью указать символ заполнения
  39. Метод zfill() в Python — возвращает копию строки, выровненной по ширине с добавлением нулей слева до указанной ширины
  40. Методы проверки символов
  41. Метод isalnum() в Python — проверяет, содержатся ли в строке только буквы и/или цифры
  42. Метод isalpha() в Python — проверяет, содержит ли строка только буквы
  43. Метод isdigit() в Python — проверяет, содержатся ли в строке только цифры
  44. Метод isnumeric() в Python — проверяет, содержит ли строка только числовые символы
  45. Метод isdecimal() в Python — проверяет, содержатся ли в строке только десятичные цифры
  46. Метод isidentifier() в Python — проверяет, является ли строка допустимым идентификатором Python
  47. Метод isspace() в Python — проверяет, состоит ли строка только из пробельных символов
  48. Метод isprintable() в Python — проверяет, являются ли все символы строки печатаемыми
  49. Методы преобразования строк
  50. Метод encode() в Python — возвращает строку в виде байтовой последовательности, используя указанную кодировку
  51. Метод decode() в Python — возвращает строковый объект, который представляет собой декодированную версию байтового объекта
  52. Метод casefold() в Python — возвращает копию строки в нижнем регистре с учетом всех правил, действующих для преобразования регистра

Введение

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

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

Метод len() в Python для определения длины строки

Метод len() в Python — это встроенный метод, который позволяет определить длину строки, то есть количество символов в строке. Этот метод является одним из наиболее простых и распространенных методов для работы со строками.

Синтаксис использования метода len() следующий:

len(string)

где string — это строка, длину которой нужно определить.

Метод len() возвращает целочисленное значение — количество символов в строке. Например, если у нас есть строка "Hello, World!", то метод len() вернет значение 13, так как в этой строке 13 символов.

Пример использования метода len():

text = "Hello, World!"
length = len(text)
print("Длина строки:", length)

Вывод:

Длина строки: 13

Метод len() особенно полезен, когда нужно определить длину строки перед выполнением других операций, таких как проверка на максимальную или минимальную длину, ограничение длины вводимых данных и т. д.

Методы для изменения регистра символов

Одной из важных операций при работе с текстом является изменение регистра символов. Python предоставляет несколько методов, которые позволяют легко изменять регистр символов в строках. В данном разделе мы рассмотрим основные методы работы с текстом, такие как lower(), upper(), capitalize(), title() и swapcase(), которые позволяют изменять регистр символов в строках в соответствии с определенными правилами. Эти методы могут быть полезными при форматировании текста, поиске и замене подстрок, а также других операциях, связанных с обработкой текстовых данных. Мы рассмотрим синтаксис и примеры использования каждого из этих методов, чтобы помочь вам более эффективно работать с текстом в Python.

Метод lower() в Python — возвращает копию строки в нижнем регистре

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

Синтаксис метода lower() прост:

string.lower()

где string – это строка, которую мы хотим привести к нижнему регистру.

Пример использования метода lower():

text = "Hello World"
lower_text = text.lower()
print(lower_text)

Результат:

привет мир

Метод lower() не изменяет оригинальную строку, а создает новую строку, в которой все символы приведены к нижнему регистру. Это связано с тем, что строки в Python являются неизменяемыми объектами, и методы работы со строками, такие как lower(), возвращают новые строки, а не изменяют исходные.

Метод upper() в Python — возвращает копию строки в верхнем регистре

Метод upper() в Python – это еще один метод для работы с регистром символов в строках. Он позволяет преобразовать все символы строки в верхний регистр. Это может быть полезно, например, при стандартизации текста или при сравнении строк без учета регистра, но уже в верхнем регистре.

Синтаксис метода upper() также прост:

string.upper()

где string – это строка, которую мы хотим привести к верхнему регистру.

Пример использования метода upper():

text = "Hello World"
upper_text = text.upper()
print(upper_text)

Результат:

HELLO WORLD

Как и метод lower(), метод upper() также создает новую строку, в которой все символы приведены к верхнему регистру, не изменяя оригинальную строку.

Метод capitalize() в Python — возвращает копию строки с первым символом в верхнем регистре

Метод capitalize() в Python – это еще один метод для работы с регистром символов в строках. Этот метод преобразует первый символ строки в верхний регистр, а все остальные символы – в нижний регистр. Это может быть полезно, например, при форматировании заголовков или имени, чтобы первая буква была в верхнем регистре, а остальные – в нижнем.

Синтаксис метода capitalize() также прост:

string.capitalize()

где string – это строка, которую мы хотим привести к соответствующему регистру.

Пример использования метода capitalize():

text = "hEllO world"
capitalized_text = text.capitalize()
print(capitalized_text)

Результат:

Hello world

Как и предыдущие методы, capitalize() также создает новую строку, в которой первый символ приведен к верхнему регистру, а остальные символы – к нижнему регистру, не изменяя оригинальную строку.

Стоит заметить, что метод capitalize()  не изменит строку, которая начинается с символов пунктуации, цифр или специальных символов.

text = "123 hello!"
capitalized_text = text.capitalize()
print(capitalized_text)

Результат:

123 hello!

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

Метод title() в Python – это еще один метод для работы с регистром символов в строках. Он преобразует первую букву каждого слова в строке в верхний регистр, а все остальные символы – в нижний регистр. Это может быть полезно, например, при форматировании заголовков или названий, чтобы каждое слово начиналось с большой буквы.

Синтаксис метода title() очень прост:

string.title()

где string – это строка, которую мы хотим привести к соответствующему регистру.

Пример использования метода title():

text = "hEllO world"
title_text = text.title()
print(title_text)

Результат:

Hello World

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

Метод title() также учитывает различные языковые особенности, так как он использует встроенные правила для определения начала слова. Например, он будет правильно обрабатывать слова с апострофами, дефисами и другими специальными символами:

text = "let's learn python"
title_text = text.title()
print(title_text)

Результат:

Let'S Learn Python

Метод swapcase() в Python — возвращает копию строки, в которой все символы верхнего регистра преобразованы в нижний регистр, и наоборот

Метод swapcase() в Python – это еще один метод для работы с регистром символов в строках. Он меняет регистр каждого символа в строке на противоположный. Если символ был в верхнем регистре, то он становится в нижнем регистре, и наоборот. Этот метод может быть полезен, например, при обработке пользовательского ввода, когда нужно инвертировать регистр всех символов в строке.

Синтаксис метода swapcase() очень прост:

string.swapcase()

где string – это строка, в которой мы хотим поменять регистр символов.

Пример использования метода swapcase():

text = "Hello World"
swapped_text = text.swapcase()
print(swapped_text)

Результат:

hELLO wORLD

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

Методы для проверки регистра символов

Одна из важных операций при работе со строками в Python — это проверка регистра символов. Python предлагает несколько методов для выполнения таких операций. В данном разделе мы рассмотрим методы islower(), isupper() и istitle(), которые позволяют изменять регистр символов в строках.

Метод islower() в Python — проверяет, содержатся ли в строке только символы в нижнем регистре

Метод islower() в Python позволяет проверить, содержит ли строка только символы в нижнем регистре. Если все символы строки находятся в нижнем регистре, метод возвращает True, в противном случае – False.

Синтаксис метода islower() выглядит следующим образом:

string.islower()

где string – это строка, которую мы хотим проверить.

Пример использования метода islower():

text = "hello world"
print(text.islower())  # True
text = "Hello World"
print(text.islower())  # False

Метод islower() особенно полезен, когда необходимо проверить, состоит ли строка только из символов в нижнем регистре, например, при валидации вводимых пользователем данных или при поиске определенных слов в тексте.

Обратите внимание, что метод islower() также возвращает True для пустых строк, так как они тоже не содержат символов, не являющихся буквами в нижнем регистре. Поэтому при использовании этого метода важно учитывать такие случаи и предусмотреть дополнительные проверки, если необходимо исключить пустые строки из рассмотрения.

Метод isupper() в Python — проверяет, содержатся ли в строке только символы в верхнем регистре

Метод isupper() в Python позволяет проверить, содержит ли строка только символы в верхнем регистре. Если все символы строки находятся в верхнем регистре, метод возвращает True, в противном случае – False.

Синтаксис метода isupper() выглядит следующим образом:

string.isupper()

где string – это строка, которую мы хотим проверить.

Пример использования метода isupper():

text = "HELLO WORLD"
print(text.isupper())  # True
text = "Hello World"
print(text.isupper())  # False

Метод isupper() может быть полезен, когда необходимо проверить, состоит ли строка только из символов в верхнем регистре, например, при валидации вводимых пользователем данных или при поиске определенных слов в тексте.

Обратите внимание, что метод isupper() также возвращает True для пустых строк, так как они тоже не содержат символов, не являющихся буквами в верхнем регистре. Поэтому при использовании этого метода важно учитывать такие случаи и предусмотреть дополнительные проверки, если необходимо исключить пустые строки из рассмотрения.

Метод istitle() в Python — проверяет, записаны ли в строке слова с заглавных букв, а остальные символы слова — в нижнем регистре.

Метод istitle() в Python позволяет проверить, является ли строка заголовком, то есть начинается ли каждое слово в строке с заглавной буквы, а остальные буквы находятся в нижнем регистре. Если строка удовлетворяет этим условиям, метод возвращает True, в противном случае – False.

Синтаксис метода istitle() выглядит следующим образом:

string.istitle()

где string – это строка, которую мы хотим проверить.

Пример использования метода istitle():

text = "Title Case Example"
print(text.istitle())  # True
text = "Mixed case Example"
print(text.istitle()) #False
text = "  Hello, World!  "
print(text.strip())  # "Hello, World!"
text = "###Python is awesome###"
print(text.strip("#"))  # "Python is awesome"

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

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

Также стоит отметить, что метод strip() удаляет символы разделителей только из начала и конца строки, не затрагивая символы разделителей внутри строки. Если требуется удалить символы из середины строки, можно использовать другие методы работы со строками, такие как replace(), split() или регулярные выражения.

Метод lstrip() в Python — возвращает копию строки с удаленными символами из начала строки, указанными в аргументе

Метод lstrip() в Python позволяет удалять пробелы и другие символы разделителей только из начала (левой части) строки. Пробелы, табуляции, переводы строк и другие символы разделителей считаются «лишними» и удаляются методом lstrip().

Синтаксис метода lstrip() выглядит следующим образом:

string.lstrip([символы])

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

Пример использования метода lstrip():

text = "  Hello, World!  "
print(text.lstrip())  # "Hello, World!  "
text = "###Python is awesome###"
print(text.lstrip("#"))  # "Python is awesome###"

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

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

Также стоит отметить, что метод lstrip() удаляет символы разделителей только из начала строки, не затрагивая символы разделителей внутри строки или в ее конце. Если требуется удалить символы разделителей из середины строки или из конца строки, можно использовать другие методы работы со строками, такие как replace(), split() или регулярные выражения.

Метод rstrip() в Python — возвращает копию строки с удаленными символами из конца строки, указанными в аргументе

Метод rstrip() в Python позволяет удалять пробелы и другие символы разделителей только из конца (правой части) строки. Пробелы, табуляции, переводы строк и другие символы разделителей считаются «лишними» и удаляются методом rstrip().

Синтаксис метода rstrip() выглядит следующим образом:

string.rstrip([символы])

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

Пример использования метода rstrip():

text = "  Hello, World!  "
print(text.rstrip())  # "  Hello, World!"
text = "###Python is awesome###"
print(text.rstrip("#"))  # "###Python is awesome"

Метод rstrip() может быть полезен, когда необходимо удалить пробелы или другие символы разделителей только из конца строки, например, при обработке строк, полученных из внешних источников данных.

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

Также стоит отметить, что метод rstrip() удаляет символы разделителей только из конца строки, не затрагивая символы разделителей внутри строки или в ее начале. Если требуется удалить символы разделителей из середины строки или из начала строки, можно использовать другие методы работы со строками, такие как replace(), split() или регулярные выражения.

Методы замены подстрок

Одним из важных аспектов работы со строками в Python является замена подстрок. Python предлагает несколько методов, позволяющих осуществлять замену подстрок в строке. В данном разделе мы рассмотрим два таких метода – replace() и translate().

Метод replace() в Python — возвращает копию строки, в которой все вхождения одной подстроки заменены на другую подстроку

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

Синтаксис метода replace() выглядит следующим образом:

string.replace(старая_подстрока, новая_подстрока, [количество_замен])

где:

  • string – это строка, в которой требуется произвести замену подстрок
  • старая_подстрока – это подстрока, которую нужно заменить
  • новая_подстрока – это подстрока, на которую нужно заменить старую подстроку
  • количество_замен (необязательный аргумент) – это максимальное количество замен, которые нужно произвести. Если аргумент количество_замен не указан, то будут заменены все вхождения старой подстроки.

Пример использования метода replace():

text = "Hello, World!"
new_text = text.replace("Hello", "Hi")
print(new_text)  # "Hi, World!"
text = "Python is awesome and Python is easy to learn"
new_text = text.replace("Python", "JavaScript", 1)
print(new_text)  # "JavaScript is awesome and Python is easy to learn"

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

import re

text = "Hello, Hi, World!"
new_text = re.sub(r"Hello|Hi", "Hola", text)
print(new_text)  # "Hola, Hola, World!"

Метод replace() является удобным и эффективным способом замены подстрок в строке в Python и находит широкое применение во многих задачах, связанных с обработкой текстовых данных.

Метод translate() в Python — возвращает копию строки, в которой некоторые указанные символы заменены на другие символы или удалены

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

Синтаксис метода translate() выглядит следующим образом:

string.translate(таблица_преобразования)

где:

  • string – это строка, в которой требуется произвести замену или удаление символов
  • таблица_преобразования – это объект типа str.maketrans() или словарь, который содержит информацию о замене или удалении символов.

Пример использования метода translate() с использованием объекта str.maketrans():

text = "Hello, World!"
translation_table = str.maketrans("eo", "13")
new_text = text.translate(translation_table)
print(new_text)  # "H1ll3, W0rld!"

Пример использования метода translate() с использованием словаря:

text = "Hello, World!"
translation_dict = {"H": "h", "e": "3", ",": None, "!": None}
new_text = text.translate(translation_dict)
print(new_text)  # "hllo World"

Метод translate() также может использоваться для удаления символов из строки, указав None в таблице преобразования. Это может быть полезно, например, для удаления знаков пунктуации или других специальных символов из текстовых данных.

text = "Hello, World!"
translation_table = str.maketrans("", "", ",!")
new_text = text.translate(translation_table)
print(new_text)  # "Hello World"

Метод translate() предлагает мощные возможности для замены или удаления символов из строки в Python и является важным инструментом для обработки текстовых данных в различных сценариях программирования.

Методы разделения и объединения строк

Обработка строк – важная задача в программировании, и Python предоставляет мощные инструменты для работы с текстовыми данными. Методы split() и join() являются основными инструментами для разделения и объединения строк соответственно, и они широко используются в различных сценариях обработки текстовых данных.

Метод split() в Python — возвращает список подстрок, разделенных указанным разделителем

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

Синтаксис метода split() выглядит следующим образом:

string.split(разделитель, количество_разделений)

где:

  • разделитель — это строка, по которой будет происходить разделение. Метод split() ищет это значение в исходной строке и разделяет ее на подстроки на основе этого разделителя. По умолчанию разделитель — это пробел.
  • количество_разделений — необязательный аргумент, который указывает максимальное количество разделений, которые могут быть произведены. Если этот аргумент не указан, то происходит разделение на все возможные подстроки. Если указано значение количество_разделений, то метод split() остановится после выполнения указанного количества разделений.

Примеры использования метода split():

text = "Hello,World,Python"
words = text.split(",")  # Разделение строки на подстроки на основе разделителя ","
print(words)  # ['Hello', 'World', 'Python']
text = "apple,banana,orange,grape,kiwi"
fruits = text.split(",", maxsplit=2)  # Разделение строки на подстроки на основе разделителя "," с максимальным количеством разделений равным 2
print(fruits)  # ['apple', 'banana', 'orange,grape,kiwi']

Во втором примере исходная строка text была разделена на подстроки на основе разделителя , с использованием аргумента maxsplit=2. Как результат, получили список fruits с тремя элементами: 'apple', 'banana', и 'orange,grape,kiwi'. Обратите внимание, что максимальное количество разделений было ограничено значением 2, и после этого метод split() остановился.

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

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

Метод join() в Python — возвращает строку, объединяя элементы итерируемого объекта в качестве разделителя между ними

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

Синтаксис метода join() выглядит следующим образом:

разделитель.join(список)

где:

  • разделитель – это строка, которая будет использоваться в качестве разделителя между элементами списка.
  • список – это список элементов, которые требуется объединить в одну строку.

Пример использования метода join():

words = ['Hello', 'World!']
text = ', '.join(words)  # Объединение элементов списка в одну строку
print(text)  # 'Hello, World!'

Метод join() предоставляет удобный способ объединения элементов списка в одну строку с использованием указанного разделителя. Это особенно полезно, когда требуется объединить множество строк или элементов списка, таких как значения в столбце CSV-файла или элементы пути файла.

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

Методы проверки начала и конца строки

Строки в Python представляют собой последовательность символов и могут содержать множество информации. Для работы с текстовыми данными в Python предлагает множество встроенных методов, включая методы startswith() и endswith(). Эти методы позволяют проверять, начинается ли или заканчивается ли строка определенными подстроками соответственно. Они широко используются в различных сценариях, таких как проверка наличия префиксов или суффиксов в строках, фильтрация данных и многих других. В этом разделе мы рассмотрим подробнее методы startswith() и endswith() в Python, и как они могут быть использованы для проверки начала и конца строки.

Метод startswith() в Python — проверяет, начинается ли строка с указанного префикса, с возможностью указания начального и конечного индексов

Метод startswith() в Python — это встроенный метод строки, который позволяет проверить, начинается ли строка с определенной подстроки. Синтаксис метода startswith() следующий:

str.startswith(prefix, start, end)

где:

  • prefix: обязательный аргумент, указывающий на подстроку, с которой нужно проверить начало строки.
  • start: необязательный аргумент, указывающий на начальный индекс, с которого нужно начать поиск. По умолчанию равен 0.
  • end: необязательный аргумент, указывающий на конечный индекс, на котором нужно закончить поиск. По умолчанию равен длине строки.

Метод startswith() возвращает True, если строка начинается с указанной подстроки, и False в противном случае.

Вот пример использования метода startswith():

str1 = "Hello, world!"
str2 = "Hi, there!"
str3 = "Hey, how are you?"

# Проверяем начало строки
print(str1.startswith("Hello"))  # True
print(str2.startswith("Hello"))  # False
print(str3.startswith("Hey"))    # True

# Проверяем начало строки со смещением
print(str1.startswith("world", 7))  # True
print(str2.startswith("there", 4))  # True
print(str3.startswith("you", 10))   # True

Метод startswith() может быть полезен, например, при фильтрации данных, когда требуется найти строки, начинающиеся с определенных префиксов, или при проверке формата файлов или URL-адресов.

Метод endswith() в Python — проверяет, заканчивается ли строка заданным суффиксом, с возможностью указания начального и конечного индексов

Метод endswith() в Python — это встроенный метод строки, который позволяет проверить, заканчивается ли строка определенной подстрокой. Синтаксис метода endswith() следующий:

str.endswith(suffix, start, end)

где:

  • suffix: обязательный аргумент, указывающий на подстроку, с которой нужно проверить окончание строки.
  • start: необязательный аргумент, указывающий на начальный индекс, с которого нужно начать поиск. По умолчанию равен 0.
  • end: необязательный аргумент, указывающий на конечный индекс, на котором нужно закончить поиск. По умолчанию равен длине строки.

Метод endswith() возвращает True, если строка заканчивается указанной подстрокой, и False в противном случае.

Вот пример использования метода endswith():

str1 = "Hello, world!"
str2 = "Hi, there!"
str3 = "Hey, how are you?"

# Проверяем окончание строки
print(str1.endswith("world!"))  # True
print(str2.endswith("world!"))  # False
print(str3.endswith("you?"))    # True

# Проверяем окончание строки со смещением
print(str1.endswith("Hello", 5))  # False
print(str2.endswith("there", 7))  # True
print(str3.endswith("how", 0, 3)) # True

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

Методы поиска подстрок

Методы поиска подстрок в строке — это важный функционал, предоставляемый Python. Такие методы, как find(), index() и count(), позволяют искать подстроки в строке и выполнять различные операции на основе найденных результатов.

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

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

Метод find() в Python — возвращает индекс последнего вхождения подстроки в строке, или -1, если подстрока не найдена

Метод find() в Python представляет собой строковый метод, который позволяет найти первое вхождение подстроки в строке. Синтаксис метода find() выглядит следующим образом:

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

где:

  • str — исходная строка, в которой производится поиск подстроки.
  • sub — подстрока, которую нужно найти в строке str.
  • start (необязательный параметр) — опциональный аргумент, определяющий начальный индекс поиска в строке str. По умолчанию start равен 0, то есть поиск начинается с начала строки str.
  • end (необязательный параметр) — опциональный аргумент, определяющий конечный индекс поиска в строке str. По умолчанию end равен длине строки str, то есть поиск выполняется до конца строки str.

Метод find() возвращает индекс (позицию) первого вхождения подстроки sub в строке str. Если подстрока не найдена, метод возвращает -1.

Пример использования метода find():

str1 = "Hello, world!"
sub1 = "world"
sub2 = "python"

index1 = str1.find(sub1)
index2 = str1.find(sub2)

print(index1)  # 7
print(index2)  # -1

В данном примере метод find() используется для поиска подстроки «world» в строке «Hello, world!» и подстроки «python» в той же строке. Результаты поиска выводятся на экран, где -1 указывает на то, что подстрока «python» не найдена в строке.

Метод index() в Python — возвращает индекс первого вхождения подстроки в строку, или вызывает ValueError, если подстрока не найдена

Метод index() в Python также позволяет осуществлять поиск подстроки в строке, аналогично методу find(). Однако, в отличие от метода find(), метод index() выбрасывает исключение ValueError, если подстрока не найдена в строке, вместо возвращения значения -1, как это делает метод find().

Синтаксис метода index() выглядит следующим образом:

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

где:

  • str — исходная строка, в которой производится поиск подстроки.
  • sub — подстрока, которую нужно найти в строке str.
  • start (необязательный параметр) — опциональный аргумент, определяющий начальный индекс поиска в строке str. По умолчанию start равен 0, то есть поиск начинается с начала строки str.
  • end (необязательный параметр) — опциональный аргумент, определяющий конечный индекс поиска в строке str. По умолчанию end равен длине строки str, то есть поиск выполняется до конца строки str.

Метод index() возвращает индекс (позицию) первого вхождения подстроки sub в строке str. Если подстрока не найдена, метод вызывает исключение ValueError.

Пример использования метода index():

str1 = "Hello, world!"
sub1 = "world"
sub2 = "python"

index1 = str1.index(sub1)
# index2 = str1.index(sub2)  # вызовет исключение ValueError

print(index1)  # 7

В данном примере метод index() используется для поиска подстроки «world» в строке «Hello, world!». Результат поиска выводится на экран. Если использовать метод index() для поиска подстроки «python» в той же строке, будет вызвано исключение ValueError, так как подстрока «python» не найдена в строке.

Метод count() в Python — возвращает количество непересекающихся вхождений подстроки в строке

Метод count() в Python предназначен для подсчета количества вхождений подстроки в строке. Он возвращает количество непересекающихся вхождений подстроки в исходной строке.

Синтаксис метода count() выглядит следующим образом:

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

где:

  • str — исходная строка, в которой производится подсчет вхождений подстроки.
  • sub — подстрока, количество вхождений которой необходимо подсчитать в строке str.
  • start (необязательный параметр) — опциональный аргумент, определяющий начальный индекс для подсчета вхождений в строке str. По умолчанию start равен 0, то есть подсчет начинается с начала строки str.
  • end (необязательный параметр) — опциональный аргумент, определяющий конечный индекс для подсчета вхождений в строке str. По умолчанию end равен длине строки str, то есть подсчет выполняется до конца строки str.

Метод count() возвращает целое число — количество вхождений подстроки sub в строке str.

Пример использования метода count():

str1 = "Hello, world!"
sub1 = "l"
sub2 = "Python"

count1 = str1.count(sub1)
count2 = str1.count(sub2)

print(count1)  # 3
print(count2)  # 0

В данном примере метод count() используется для подсчета количества вхождений подстрок «l» и «Python» в строке «Hello, world!». Результаты подсчета выводятся на экран.

Методы in, not in в Python для проверки наличия подстрок

Методы in и not in в Python предназначены для проверки наличия подстроки в строке. Они возвращают логическое значение True или False в зависимости от того, содержит ли исходная строка указанную подстроку или нет.

Синтаксис методов in и not in очень прост:

  • sub in str — возвращает True, если подстрока sub содержится в строке str, и False в противном случае.
  • sub not in str — возвращает True, если подстрока sub не содержится в строке str, и False в противном случае.

Где:

  • sub — подстрока, наличие которой проверяется в строке str.
  • str — исходная строка, в которой выполняется проверка на наличие подстроки.

Пример использования методов in и not in:

str1 = "Hello, world!"
sub1 = "world"
sub2 = "Python"

result1 = sub1 in str1
result2 = sub2 not in str1
result3 = sub1 not in str1
result4 = sub2 in str1

print(result1)  # True
print(result2)  # True
print(result3)  # False
print(result4)  # False

В данном примере методы in и not in используются для проверки наличия подстрок «world» и «Python» в строке «Hello, world!». Результаты проверки выводятся на экран в виде логических значений True или False.

Методы форматирования строк

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

В Python существует несколько способов форматирования строк, включая метод format(), format_map() и f-строки (f-strings). Метод format() предоставляет более гибкий и расширенный способ форматирования строк, тогда как f-строки — это более современный и удобный подход, введенный в Python 3.6.

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

Метод format() в Python — возвращает отформатированную строку, заменяя в ней соответствующие метки значениями

Метод format() является одним из методов форматирования строк в Python. Он предоставляет гибкий способ вставки значений переменных и выражений в строки. Синтаксис метода format() состоит из строки-шаблона, в которую вставляются значения, и метода .format(), применяемого к этой строке.

Основным преимуществом метода format() является его гибкость. В строке-шаблоне можно использовать специальные метки {} внутри которых указываются места, куда будут подставляться значения переменных или выражений. Эти метки называются «полями форматирования» и могут содержать дополнительные спецификаторы формата, такие как выравнивание, ширина поля, количество знаков после запятой и другие опции.

Пример использования метода format():

name = "John"
age = 30
height = 180.5

print("Имя: {}".format(name))
print("Возраст: {}".format(age))
print("Рост: {:.1f}".format(height))

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

Имя: John
Возраст: 30
Рост: 180.5

Метод format() также поддерживает более сложные способы форматирования. Вот некоторые из них:

  1. Указание порядка вставки значений: Вы можете явно указать порядок вставки значений, используя индексы внутри полей форматирования. Например:
    name = "John"
    age = 30
    print("{1} - {0} лет".format(age, name))

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

    John - 30 лет
  2. Использование именованных аргументов: Вы можете использовать именованные аргументы для более ясного и читаемого форматирования. Например:
    person = {"name": "John", "age": 30}
    print("{name} - {age} лет".format(**person))

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

    John - 30 лет
  3. Форматирование чисел и дат: Метод format() поддерживает различные спецификаторы формата для форматирования чисел, дат и других типов данных. Например:
    pi = 3.14159265359
    print("{:.2f}".format(pi))

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

    3.14
  4. Форматирование строковых значений: Метод format() также позволяет форматировать строки с использованием специальных спецификаторов формата. Например:
    name = "John"
    print("{:<10}".format(name))

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

    John

Однако, метод format() также имеет свои недостатки, такие как более сложный синтаксис и больше кода для написания, особенно в случае сложных форматирований. Именно поэтому в Python 3.6 и новее был введен еще один более простой и удобный способ форматирования строк — f-строки (f-strings).

Метод format_map() в Python — возвращает отформатированную строку, заменяя в ней метки значениями из указанного словаря

Метод format_map() в Python — это один из методов строкового типа, который предоставляет возможность форматирования строк с использованием словаря в качестве источника значений.

Основной синтаксис метода format_map() выглядит следующим образом:

str.format_map(mapping)

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

Основные особенности метода format_map():

  1. Использование словаря в качестве источника значений: Вместо передачи значений напрямую в метод format(), метод format_map() принимает словарь в качестве аргумента mapping, который содержит ключи и значения для подстановки в строку. Например:
    person = {'name': 'John', 'age': 30}
    print("Имя: {name}, Возраст: {age}".format_map(person))

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

    Имя: John, Возраст: 30
  2. Гибкость форматирования: Метод format_map() позволяет использовать любые ключи и значения из словаря в строке, что делает его более гибким в сравнении с другими методами форматирования строк. Например:
    data = {'a': 1, 'b': 2, 'c': 3}
    print("{a} + {b} = {c}".format_map(data))

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

    1 + 2 = 3
  3. Обработка отсутствующих ключей: Если ключ из словаря отсутствует в строке форматирования, метод format_map() не вызывает ошибку, а просто оставляет его без изменений. Это может быть полезно, если словарь содержит неполный набор ключей. Например:
    person = {'name': 'John'}
    print("Имя: {name}, Возраст: {age}".format_map(person))

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

    Имя: John, Возраст: {age}
  4. Поддержка дополнительных методов словаря: Метод format_map() также поддерживает дополнительные методы словаря, такие как defaultdict, ChainMap и другие, что позволяет использовать более сложные структуры данных для форматирования строк.

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

f-строки (f-strings) в Python

f-строки (f-strings) в Python — это специальный синтаксис для форматирования строк, который был представлен в Python 3.6. Они предлагают удобный и выразительный способ вставки значений в строки без необходимости использования метода format() или других специальных символов форматирования.

Основные особенности f-строк в Python:

  1. Простота и выразительность: f-строки позволяют встраивать значения переменных непосредственно в строки, обрамляя их фигурными скобками {}. Например:
    name = "John"
    age = 30
    print(f"{name} - {age} лет")

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

    John - 30 лет
  2. Поддержка выражений: Внутри фигурных скобок {} в f-строках можно использовать выражения, включая арифметические операции, вызовы функций и другие выражения на языке Python. Например:
    a = 5
    b = 10
    print(f"Сумма чисел {a} и {b} равна {a + b}")

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

    Сумма чисел 5 и 10 равна 15
  3. Форматирование значений: f-строки поддерживают спецификаторы формата, такие же, как и метод format(), для форматирования чисел, дат и других типов данных. Например:
    pi = 3.14159265359
    print(f"{pi:.2f}")

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

    3.14
  4. Поддержка сложных выражений: f-строки также могут содержать сложные выражения и логические операторы, что делает их более мощными и гибкими для форматирования строк. Например:
    name = "John"
    age = 30
    print(f"{name} - {age} лет" if age > 18 else f"{name} - несовершеннолетний")

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

    John - 30 лет

f-строки в Python предоставляют удобный и современный способ форматирования строк, особенно в сравнении с более старыми методами, такими как %-оператор или метод format(). Они широко используются в современном Python-коде и могут значительно упростить задачи форматирования строк.

Методы выравнивания строк

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

В этом разделе мы рассмотрим четыре метода выравнивания строк: center(), ljust(), rjust() и zfill(). Каждый из этих методов имеет свои особенности и параметры, позволяющие настроить процесс выравнивания строк в соответствии с требованиями вашего кода.

Метод center() выравнивает строку по центру, добавляя символы-заполнители с обеих сторон строки до заданной ширины. Метод ljust() выравнивает строку по левому краю, добавляя символы-заполнители справа до заданной ширины. Метод rjust() выравнивает строку по правому краю, добавляя символы-заполнители слева до заданной ширины. Метод zfill() выравнивает строку по левому краю, заполняя недостающие позиции символами «0» до заданной ширины.

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

Метод center() в Python — возвращает копию строки, выровненной по центру на заданную ширину, с возможностью указать символ заполнения

Метод center() в Python — это строковый метод, который позволяет выравнивать строку по центру, добавляя символы-заполнители с обеих сторон до заданной ширины.

Синтаксис метода center() выглядит следующим образом:

string.center(width[, fillchar])

где:

  • string — исходная строка, которую необходимо выровнять по центру.
  • width — ширина результирующей строки, включая исходную строку и символы-заполнители.
  • fillchar (необязательный параметр) — символ-заполнитель, который будет использоваться для заполнения позиций между исходной строкой и краем результирующей строки. По умолчанию используется пробел.

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

Пример использования метода center():

text = "Hello, world!"
width = 20
fillchar = "*"

result = text.center(width, fillchar)

print(result)

Результат:

****Hello, world!****

Как видно из примера, исходная строка «Hello, world!» была выровнена по центру и заполнена символами «*» до ширины 20 символов. Метод center() автоматически добавил по 4 символа-заполнителя с обеих сторон исходной строки для достижения указанной ширины.

Метод ljust() в Python — возвращает копию строки, выровненной по левому краю на заданную ширину, с возможностью указать символ заполнения

Метод ljust() в Python — это строковый метод, который позволяет выравнивать строку по левому краю путем добавления символов-заполнителей справа до заданной ширины.

Синтаксис метода ljust() выглядит следующим образом:

string.ljust(width[, fillchar])

где:

  • string — исходная строка, которую необходимо выровнять по левому краю.
  • width — ширина результирующей строки, включая исходную строку и символы-заполнители.
  • fillchar (необязательный параметр) — символ-заполнитель, который будет использоваться для заполнения позиций справа от исходной строки до указанной ширины. По умолчанию используется пробел.

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

Пример использования метода ljust():

text = "Hello"
width = 10
fillchar = "-"

result = text.ljust(width, fillchar)

print(result)

Результат:

Hello-----

Как видно из примера, исходная строка «Hello» была выровнена по левому краю и заполнена символами «-» справа до ширины 10 символов. Метод ljust() автоматически добавил 5 символов-заполнителей справа от исходной строки для достижения указанной ширины.

Метод rjust() в Python — возвращает копию строки, выровненной по правому краю на заданную ширину, с возможностью указать символ заполнения

Метод rjust() в Python — это строковый метод, который позволяет выравнивать строку по правому краю путем добавления символов-заполнителей слева до заданной ширины.

Синтаксис метода rjust() выглядит следующим образом:

string.rjust(width[, fillchar])

где:

  • string — исходная строка, которую необходимо выровнять по правому краю.
  • width — ширина результирующей строки, включая исходную строку и символы-заполнители.
  • fillchar (необязательный параметр) — символ-заполнитель, который будет использоваться для заполнения позиций слева от исходной строки до указанной ширины. По умолчанию используется пробел.

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

Пример использования метода rjust():

text = "Hello"
width = 10
fillchar = "-"

result = text.rjust(width, fillchar)

print(result)

Результат:

-----Hello

Как видно из примера, исходная строка «Hello» была выровнена по правому краю и заполнена символами «-» слева до ширины 10 символов. Метод rjust() автоматически добавил 5 символов-заполнителей слева от исходной строки для достижения указанной ширины.

Метод zfill() в Python — возвращает копию строки, выровненной по ширине с добавлением нулей слева до указанной ширины

Метод zfill() в Python — это строковый метод, который позволяет дополнять строку слева символами «0» (нулем) до заданной ширины.

Синтаксис метода zfill() выглядит следующим образом:

string.zfill(width)

где:

  • string — исходная строка, которую необходимо дополнить символами «0».
  • width — ширина результирующей строки, включая исходную строку и символы «0».

Метод zfill() возвращает новую строку, которая представляет собой исходную строку, дополненную слева символами «0» до указанной ширины.

Пример использования метода zfill():

number = "42"
width = 5

result = number.zfill(width)

print(result)

Результат:

00042

Как видно из примера, исходная строка «42» была дополнена слева символами «0» до ширины 5 символов с использованием метода zfill(). Метод автоматически добавил 3 символа «0» слева от исходной строки для достижения указанной ширины.

Методы проверки символов

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

В данном разделе мы рассмотрим несколько методов для проверки символов в строках в Python, таких как isalnum(), isalpha(), isdigit(), isnumeric(), isdecimal(), isidentifier(), isspace() и isprintable(). Они предоставляют удобные способы проверки различных свойств символов и могут быть полезными во множестве сценариев, таких как валидация пользовательского ввода, обработка текстовых данных, работа с файлами и многих других.

Метод isalnum() в Python — проверяет, содержатся ли в строке только буквы и/или цифры

Метод isalnum() в Python является встроенным методом строк, который позволяет проверить, состоит ли каждый символ в строке только из букв и/или цифр. Если все символы в строке являются буквенно-цифровыми, то метод isalnum() возвращает True, в противном случае — False.

Синтаксис метода isalnum() выглядит следующим образом:

str.isalnum()

где str — это строка, которую мы хотим проверить на наличие только буквенно-цифровых символов.

Пример использования метода isalnum():

string1 = "HelloWorld123"
string2 = "Hello World!"
string3 = "12345"
string4 = ""

print(string1.isalnum())  # True
print(string2.isalnum())  # False
print(string3.isalnum())  # True
print(string4.isalnum())  # False

Метод isalnum() особенно полезен при валидации пользовательского ввода, когда необходимо проверить, что введенные данные содержат только буквы и/или цифры.

Метод isalpha() в Python — проверяет, содержит ли строка только буквы

Метод isalpha() в Python является встроенным методом строк, который позволяет проверить, состоит ли каждый символ в строке только из букв. Если все символы в строке являются буквами, то метод isalpha() возвращает True, в противном случае — False.

Синтаксис метода isalpha() выглядит следующим образом:

str.isalpha()

где str — это строка, которую мы хотим проверить на наличие только буквенных символов.

Пример использования метода isalpha():

string1 = "HelloWorld"
string2 = "Hello World!"
string3 = "12345"
string4 = ""

print(string1.isalpha())  # True
print(string2.isalpha())  # False
print(string3.isalpha())  # False
print(string4.isalpha())  # False

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

Метод isdigit() в Python — проверяет, содержатся ли в строке только цифры

Метод isdigit() в Python — это встроенный метод строк, который позволяет проверить, состоит ли каждый символ в строке только из цифр. Если все символы в строке являются цифрами, то метод isdigit() возвращает True, в противном случае — False.

Синтаксис метода isdigit() выглядит следующим образом:

str.isdigit()

где str — это строка, которую мы хотим проверить на наличие только цифровых символов.

Пример использования метода isdigit():

string1 = "12345"
string2 = "12.34"
string3 = "0"
string4 = "12345A"

print(string1.isdigit())  # True
print(string2.isdigit())  # False
print(string3.isdigit())  # True
print(string4.isdigit())  # False

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

Метод isnumeric() в Python — проверяет, содержит ли строка только числовые символы

Метод isnumeric() в Python — это встроенный метод строк, который позволяет проверить, состоит ли каждый символ в строке из числовых символов, включая цифры и символы числовых систем, таких как дробные числа, числа с показателем степени, римские числа и т.д. Если все символы в строке являются числовыми символами, то метод isnumeric() возвращает True, в противном случае — False.

Синтаксис метода isnumeric() выглядит следующим образом:

str.isnumeric()

где str — это строка, которую мы хотим проверить на наличие только числовых символов.

Пример использования метода isnumeric():

string1 = "12345"
string2 = "12.34"
string3 = "½"
string4 = "u2168"  # Римская цифра 9 в Unicode

print(string1.isnumeric())  # True
print(string2.isnumeric())  # False
print(string3.isnumeric())  # True
print(string4.isnumeric())  # True

Метод isnumeric() может быть полезен при валидации строк, когда необходимо проверить, что введенные данные состоят только из числовых символов, включая различные числовые системы и форматы.

Метод isdecimal() в Python — проверяет, содержатся ли в строке только десятичные цифры

Метод isdecimal() в Python — это встроенный метод строк, который позволяет проверить, состоит ли каждый символ в строке из десятичных чисел (0-9). Если все символы в строке являются десятичными числами, то метод isdecimal() возвращает True, в противном случае — False.

Синтаксис метода isdecimal() выглядит следующим образом:

str.isdecimal()

где str — это строка, которую мы хотим проверить на наличие только десятичных чисел.

Пример использования метода isdecimal():

string1 = "12345"
string2 = "12.34"
string3 = "½"
string4 = "u2168"  # Римская цифра 9 в Unicode

print(string1.isdecimal())  # True
print(string2.isdecimal())  # False
print(string3.isdecimal())  # False
print(string4.isdecimal())  # False

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

Метод isidentifier() в Python — проверяет, является ли строка допустимым идентификатором Python

Метод isidentifier() в Python — это встроенный метод строк, который позволяет проверить, является ли строка допустимым идентификатором в языке Python. Идентификатор в Python — это имя переменной, функции, класса или другого объекта, которое может состоять из букв (a-z, A-Z), цифр (0-9) и символа подчеркивания (_), но не может начинаться с цифры.

Синтаксис метода isidentifier() выглядит следующим образом:

str.isidentifier()

где str — это строка, которую мы хотим проверить на допустимость в качестве идентификатора.

Пример использования метода isidentifier():

string1 = "my_variable"
string2 = "123variable"
string3 = "class"
string4 = "if"

print(string1.isidentifier())  # True
print(string2.isidentifier())  # False
print(string3.isidentifier())  # True
print(string4.isidentifier())  # True

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

Метод isspace() в Python — проверяет, состоит ли строка только из пробельных символов

Метод isspace() в Python — это встроенный метод строк, который позволяет проверить, состоит ли строка только из символов пробела (пробел, табуляция, новая строка и т.д.). Этот метод возвращает True, если все символы в строке являются пробельными символами, и False в противном случае.

Синтаксис метода isspace() выглядит следующим образом:

str.isspace()

где str — это строка, которую мы хотим проверить на наличие только пробельных символов.

Пример использования метода isspace():

string1 = "   "
string2 = "Hello World"
string3 = "t n"

print(string1.isspace())  # True
print(string2.isspace())  # False
print(string3.isspace())  # True

Метод isspace() может быть полезен при обработке строк, когда необходимо проверить, состоят ли все символы в строке только из пробельных символов. Например, при валидации пользовательского ввода или при разборе текстовых данных.

Метод isprintable() в Python — проверяет, являются ли все символы строки печатаемыми

Метод isprintable() в Python — это встроенный метод строк, который позволяет проверить, являются ли все символы в строке «печатаемыми» (printable), то есть могут ли они быть отображены на экране или напечатаны на печати. Этот метод возвращает True, если все символы в строке являются печатаемыми, и False в противном случае.

Синтаксис метода isprintable() выглядит следующим образом:

str.isprintable()

где str — это строка, которую мы хотим проверить на наличие только печатаемых символов.

Пример использования метода isprintable():

string1 = "Hello World"
string2 = "Привет мир!"
string3 = "12345"
string4 = " tn"

print(string1.isprintable())  # True
print(string2.isprintable())  # True
print(string3.isprintable())  # True
print(string4.isprintable())  # False

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

Методы преобразования строк

Строки в Python — это упорядоченные наборы символов, и иногда требуется выполнить различные операции преобразования строк, такие как кодирование и декодирование, а также приведение строк к нижнему регистру с учетом особенностей символов юникода. Для этого в Python предоставляются методы encode(), decode() и casefold(), которые позволяют выполнять различные преобразования строк в соответствии с требованиями приложения.

Методы encode(), decode() и casefold() являются методами строк в Python и предоставляют различные функциональности для работы с текстом. Метод encode() позволяет преобразовывать строки в байтовые объекты, decode() — обратное преобразование байтовых объектов в строки с использованием указанной кодировки, а casefold() — выполняет преобразование строк в нижний регистр с учетом особенностей символов юникода, что делает его более мощным вариантом приведения строк к нижнему регистру по сравнению с методом lower().

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

Метод encode() в Python — возвращает строку в виде байтовой последовательности, используя указанную кодировку

Метод encode() в Python является одним из методов строк, предназначенных для кодирования (преобразования) строк в байтовые объекты. Он используется для преобразования строк в последовательность байтов, используя определенную кодировку, такую как UTF-8, UTF-16, ASCII и другие.

Синтаксис метода encode() выглядит следующим образом:

str.encode(encoding='utf-8', errors='strict')

где encoding — это строковый аргумент, указывающий на желаемую кодировку, и errors — это аргумент, указывающий на способ обработки ошибок при кодировании.

Метод encode() возвращает байтовый объект, который представляет собой кодированную версию исходной строки. Этот байтовый объект может быть сохранен, передан или использован в дальнейших операциях ввода-вывода, таких как запись в файл или отправка по сети.

Пример использования метода encode():

# Исходная строка
text = "Hello, world!"

# Кодирование строки в байтовый объект с использованием UTF-8
encoded_text = text.encode(encoding='utf-8')

# Вывод байтового объекта
print(encoded_text)

В данном примере исходная строка «Hello, world!» была закодирована в байтовый объект с использованием кодировки UTF-8. Результатом выполнения кода будет вывод байтового объекта в соответствии с кодировкой, например: b'Hello, world!'.

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

Метод decode() в Python — возвращает строковый объект, который представляет собой декодированную версию байтового объекта

Метод decode() в Python является методом строк, предназначенным для декодирования (преобразования) байтовых объектов в строки. Он используется для преобразования последовательностей байтов, представляющих закодированный текст, в строковые объекты, используя определенную кодировку, такую как UTF-8, UTF-16, ASCII и другие.

Синтаксис метода decode() выглядит следующим образом:

bytes.decode(encoding='utf-8', errors='strict')

где encoding — это строковый аргумент, указывающий на кодировку, в которую нужно произвести декодирование, и errors — это аргумент, указывающий на способ обработки ошибок при декодировании.

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

Пример использования метода decode():

# Байтовый объект
encoded_text = b'Hello, world!'

# Декодирование байтового объекта с использованием UTF-8
decoded_text = encoded_text.decode(encoding='utf-8')

# Вывод строки
print(decoded_text)

В данном примере байтовый объект encoded_text, содержащий закодированный текст «Hello, world!», был декодирован в строковый объект с использованием кодировки UTF-8. Результатом выполнения кода будет вывод строки «Hello, world!».

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

Метод casefold() в Python — возвращает копию строки в нижнем регистре с учетом всех правил, действующих для преобразования регистра

Метод casefold() в Python является методом строк, который используется для преобразования символов строки в их «сложную» (Unicode) форму, пригодную для сравнения строк с учетом регистра, с учетом особенностей различных языков и позволяющую выполнить сравнение без учета регистра символов.

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

Синтаксис метода casefold() выглядит следующим образом:

str.casefold()

Метод casefold() не принимает аргументов и возвращает новую строку, содержащую результат преобразования символов в «сложную» форму, пригодную для сравнения строк с учетом регистра.

Пример использования метода casefold():

# Исходная строка
text = "ßestraße"

# Преобразование строки в "сложную" форму
casefolded_text = text.casefold()

# Вывод результата
print(casefolded_text)

В данном примере исходная строка text содержит немецкое слово «ßestraße», в котором символ «ß» является специфическим символом немецкого алфавита, имеющим разные формы в зависимости от регистра. Метод casefold() преобразует этот символ в его «сложную» форму, пригодную для сравнения строк с учетом регистра, и результатом выполнения кода будет вывод строки «ssestrasse».

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

Текстовые переменные str в Питоне

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

        >>> stroka = 'Python'
>>> type(stroka)
<class 'str'>
>>> stroka2 = "code"
>>> type(stroka2)
<class 'str'>

    

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

        stroka = ''
    

Или:

        stroka2 = ""
    

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

        >>> print("'Самоучитель Python' - возможно, лучший справочник по Питону.")
'Самоучитель Python' - возможно, лучший справочник по Питону.
>>> print('"Самоучитель Python" - возможно, лучший справочник по Питону.')
"Самоучитель Python" - возможно, лучший справочник по Питону.

    

Использование одного и того же вида кавычек внутри и снаружи строки вызовет ошибку:

        >>> print(""Самоучитель Python" - возможно, лучший справочник по Питону.")
  File "<pyshell>", line 1
    print(""Самоучитель Python" - возможно, лучший справочник по Питону.")
                      ^
SyntaxError: invalid syntax

    

Кроме двойных " и одинарных кавычек ', в Python используются и тройные ''' – в них заключают текст, состоящий из нескольких строк, или программный код:

        >>> print('''В тройные кавычки заключают многострочный текст.
Программный код также можно выделить тройными кавычками.''')
В тройные кавычки заключают многострочный текст.
Программный код также можно выделить тройными кавычками.

    

Длина строки len в Python

Для определения длины строки используется встроенная функция len(). Она подсчитывает общее количество символов в строке, включая пробелы:

        >>> stroka = 'python'
>>> print(len(stroka))
6
>>> stroka1 = ' '
>>> print(len(stroka1))
1

    

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

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

        >>> number1 = 55
>>> number2 = 55.5
>>> stroka1 = str(number1)
>>> stroka2 = str(number2)
>>> print(type(stroka1))
<class 'str'>
>>> print(type(stroka2))
<class 'str'>

    

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

Сложение и умножение строк

Как уже упоминалось в предыдущей главе, строки можно складывать – эта операция также известна как конкатенация:

        >>> str1 = 'Python'
>>> str2 = ' - '
>>> str3 = 'самый гибкий язык программирования'
>>> print(str1 + str2 + str3)
Python - самый гибкий язык программирования

    

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

        >>> stroka = '*** '
>>> print(stroka * 5)
*** *** *** *** ***

    

Подстроки

Подстрокой называется фрагмент определенной строки. Например, ‘abra’ является подстрокой ‘abrakadabra’. Чтобы определить, входит ли какая-то определенная подстрока в строку, используют оператор in:

        >>> stroka = 'abrakadabra'
>>> print('abra' in stroka)
True
>>> print('zebra' in stroka)
False

    

Для обращения к определенному символу строки используют индекс – порядковый номер элемента. Python поддерживает два типа индексации – положительную, при которой отсчет элементов начинается с 0 и с начала строки, и отрицательную, при которой отсчет начинается с -1 и с конца:

Положительные индексы 0 1 2 3 4 5 6
Пример строки P r o g l i b
Отрицательные индексы -7 -6 -5 -4 -3 -2 -1

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

        >>> stroka = 'программирование'
>>> print(stroka[7])
м
>>> print(stroka[-1])
е

    

Срезы строк в Python

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

        >>> stroka = 'программирование'
>>> print(stroka[7:10])
мир

    

Диапазон среза [a:b] начинается с первого указанного элемента а включительно, и заканчивается на последнем, не включая b в результат:

        >>> stroka = 'программa'
>>> print(stroka[3:8])
грамм
    

Если не указать первый элемент диапазона [:b], срез будет выполнен с начала строки до позиции второго элемента b:

        >>> stroka = 'программa'
>>> print(stroka[:4])
прог

    

В случае отсутствия второго элемента [a:] срез будет сделан с позиции первого символа и до конца строки:

        >>> stroka = 'программa'
>>> print(stroka[3:])
граммa

    

Если не указана ни стартовая, ни финальная позиция среза, он будет равен исходной строке:

        >>> stroka = 'позиции не заданы'
>>> print(stroka[:])
позиции не заданы

    

Шаг среза

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

        >>> stroka = 'Python лучше всего подходит для новичков.'
>>> print(stroka[1:15:3])
yoлшв

    

Шаг может быть отрицательным – в этом случае символы будут выбираться, начиная с конца строки:

        >>> stroka = 'это пример отрицательного шага'
>>> print(stroka[-1:-15:-4])
а нт

    

Срез [::-1] может оказаться очень полезным при решении задач, связанных с палиндромами:

        >>> stroka = 'А роза упала на лапу Азора'
>>> print(stroka[::-1])
арозА упал ан алапу азор А

    

Замена символа в строке

Строки в Python относятся к неизменяемым типам данных. По этой причине попытка замены символа по индексу обречена на провал:

        >>> stroka = 'mall'
>>> stroka[0] = 'b'
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
TypeError: 'str' object does not support item assignment

    

Но заменить любой символ все-таки можно – для этого придется воспользоваться срезами и конкатенацией. Результатом станет новая строка:

        >>> stroka = 'mall'
>>> stroka = 'b' + stroka[1:]
>>> print(stroka)
ball

    

Более простой способ «замены» символа или подстроки – использование метода replace(), который мы рассмотрим ниже.

Полезные методы строк

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

  • Преобразование строк.
  • Оценка и классификация строк.
  • Конвертация регистра.
  • Поиск, подсчет и замена символов.

Рассмотрим эти методы подробнее.

Преобразование строк

Три самых используемых метода из этой группы – join(), split() и partition(). Метод join() незаменим, если нужно преобразовать список или кортеж в строку:

        >>> spisok = ['Я', 'изучаю', 'Python']
>>> stroka = ' '.join(spisok)
>>> print(stroka)
Я изучаю Python

    

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

        >>> kort = ('Я', 'изучаю', 'Django')
>>> stroka = '***'.join(kort)
>>> print(stroka)
Я***изучаю***Django

    

Метод split() используется для обратной манипуляции – преобразования строки в список:

        >>> text = 'это пример текста для преобразования в список'
>>> spisok = text.split()
>>> print(spisok)
['это', 'пример', 'текста', 'для', 'преобразования', 'в', 'список']

    

По умолчанию split() разбивает строку по пробелам. Но можно указать любой другой символ – и на практике это часто требуется:

        >>> text = 'цвет: синий; вес: 1 кг; размер: 30х30х50; материал: картон'
>>> spisok = text.split(';')
>>> print(spisok)
['цвет: синий', ' вес: 1 кг', ' размер: 30х30х50', ' материал: картон']

    

Метод partition() поможет преобразовать строку в кортеж:

        >>> text = 'Python - простой и понятный язык'
>>> kort = text.partition('и')
>>> print(kort)
('Python - простой ', 'и', ' понятный язык')

    

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

Оценка и классификация строк

В Python много встроенных методов для оценки и классификации текстовых данных. Некоторые из этих методов работают только со строками, в то время как другие универсальны. К последним относятся, например, функции min() и max():

        >>> text = '12345'
>>> print(min(text))
1
>>> print(max(text))
5


    

В Python есть специальные методы для определения типа символов. Например, isalnum() оценивает, состоит ли строка из букв и цифр, либо в ней есть какие-то другие символы:

        >>> text = 'abracadabra123456'
>>> print(text.isalnum())
True
>>> text1 = 'a*b$ra cadabra'
>>> print(text1.isalnum())
False

    

Метод isalpha() поможет определить, состоит ли строка только из букв, или включает специальные символы, пробелы и цифры:

        >>> text = 'программирование'
>>> print(text.isalpha())
True
>>> text2 = 'password123'
>>> print(text2.isalpha())
False

    

С помощью метода isdigit() можно определить, входят ли в строку только цифры, или там есть и другие символы:

        >>> text = '1234567890'
>>> print(text.isdigit())
True
>>> text2 = '123456789o'
>>> print(text2.isdigit())
False

    

Поскольку вещественные числа содержат точку, а отрицательные – знак минуса, выявить их этим методом не получится:

        >>> text = '5.55'
>>> print(text.isdigit())
False
>>> text1 = '-5'
>>> print(text1.isdigit())
False
    

Если нужно определить наличие в строке дробей или римских цифр, подойдет метод isnumeric():

        >>> text = '½⅓¼⅕⅙'
>>> print(text.isdigit())
False
>>> print(text.isnumeric())
True

    

Методы islower() и isupper() определяют регистр, в котором находятся буквы. Эти методы игнорируют небуквенные символы:

        >>> text = 'abracadabra'
>>> print(text.islower())
True
>>> text2 = 'Python bytes'
>>> print(text2.islower())
False
>>> text3 = 'PYTHON'
>>> print(text3.isupper())
True

    

Метод isspace() определяет, состоит ли анализируемая строка из одних пробелов, или содержит что-нибудь еще:

        >>> stroka = '   '
>>> print(stroka.isspace())
True
>>> stroka2 = '  a  '
>>> print(stroka2.isspace())
False

    

Конвертация регистра

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

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

        >>> text = 'этот текст надо написать заглавными буквами'
>>> print(text.upper())
ЭТОТ ТЕКСТ НАДО НАПИСАТЬ ЗАГЛАВНЫМИ БУКВАМИ
>>> text = 'зДесь ВСе букВы рАзныЕ, а НУжнЫ проПИСНыЕ'
>>> print(text.lower())
здесь все буквы разные, а нужны прописные

    

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

        >>> text = 'предложение должно начинаться с ЗАГЛАВНОЙ буквы.'
>>> print(text.capitalize())
Предложение должно начинаться с заглавной буквы.

    

Методы swapcase() и title() используются реже. Первый заменяет исходный регистр на противоположный, а второй – начинает каждое слово с заглавной буквы:

        >>> text = 'пРИМЕР иСПОЛЬЗОВАНИЯ swapcase'
>>> print(text.swapcase())
Пример Использования SWAPCASE
>>> text2 = 'тот случай, когда нужен метод title'
>>> print(text2.title())
Тот Случай, Когда Нужен Метод Title

    

Поиск, подсчет и замена символов

Методы find() и rfind() возвращают индекс стартовой позиции искомой подстроки. Оба метода учитывают только первое вхождение подстроки. Разница между ними заключается в том, что find() ищет первое вхождение подстроки с начала текста, а rfind() с конца:

        >>> text = 'пример текста, в котором нужно найти текстовую подстроку'
>>> print(text.find('текст'))
7
>>> print(text.rfind('текст'))
37

    

Такие же результаты можно получить при использовании методов index() и rindex() – правда, придется предусмотреть обработку ошибок, если искомая подстрока не будет обнаружена:

        >>> text = 'Съешь еще этих мягких французских булок!'
>>> print(text.index('еще'))
6
>>> print(text.rindex('чаю'))
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
ValueError: substring not found

    

Если нужно определить, начинается ли строка с определенной подстроки, поможет метод startswith():

        >>> text = 'Жила-была курочка Ряба'
>>> print(text.startswith('Жила'))
True

    

Чтобы проверить, заканчивается ли строка на нужное окончание, используют endswith():

        >>> text = 'В конце всех ждал хэппи-енд'
>>> print(text.endswith('енд'))
True

    

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

        >>> text = 'Съешь еще этих мягких французских булок, да выпей же чаю!'
>>> print(text.count('е'))
5
>>> print(text.count('е', 5, 25))
2

    

Методы strip(), lstrip() и rstrip() предназначены для удаления пробелов. Метод strip() удаляет пробелы в начале и конце строки, lstrip() – только слева, rstrip() – только справа:

        >>> text = '    здесь есть пробелы и слева, и справа    '
>>> print('***', text.strip(), '***')
*** здесь есть пробелы и слева, и справа ***
>>> print('***', text.lstrip(), '***')
*** здесь есть пробелы и слева, и справа     ***
>>> print('***', text.rstrip(), '***')
***     здесь есть пробелы и слева, и справа ***
    

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

        >>> text = 'В этой строчке нужно заменить только одну "ч"'
>>> print(text.replace('ч', '', 1))
В этой строке нужно заменить только одну "ч"

    

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

Практика

Задание 1

Напишите программу, которая получает на вход строку и выводит:

  • количество символов, содержащихся в тексте;
  • True или False в зависимости от того, являются ли все символы буквами и цифрами.

Решение:

        text = input()
print(len(text))
print(text.isalpha())

    

Задание 2

Напишите программу, которая получает на вход слово и выводит True, если слово является палиндромом, или False в противном случае. Примечание: для сравнения в Python используется оператор ==.

Решение:

        text = input().lower()
print(text == text[::-1])

    

Задание 3

Напишите программу, которая получает строку с именем, отчеством и фамилией, написанными в произвольном регистре, и выводит данные в правильном формате. Например, строка алеКСандр СЕРГЕЕВИЧ ПушкиН должна быть преобразована в Александр Сергеевич Пушкин.

Решение:

        text = input()
print(text.title())

    

Задание 4

Имеется строка 12361573928167047230472012. Напишите программу, которая преобразует строку в текст один236один573928один670472304720один2.

Решение:

        text = '12361573928167047230472012'
print(text.replace('1', 'один'))

    

Задание 5

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

Пример ввода:

        Алексей
Константинович
Романов
бухгалтер

    

Вывод:

        А. К. Романов, бухгалтер
    

Решение:

        first_name, patronymic, last_name, position = input(), input(), input(), input()
print(first_name[0] + '.', patronymic[0] + '.', last_name + ',', position)

    

Задание 6

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

Пример ввода:

        ЗонтИК
к

    

Вывод:

        True
    

Решение:

        text = input().lower()
letter = input()
print(letter in text)

    

Задание 7

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

Решение:

        vowels = 'аиеёоуыэюя'
letter = input().lower()
print(letter in vowels)

    

Задание 8

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

Пример ввода:

        Шесть шустрых мышат в камышах шуршат
ша

    

Вывод:

        16 33
    

Решение:

        text, letter = input().lower(), input()
print(text.find(letter), text.rfind(letter))

    

Задание 9

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

Пример ввода:

        В роще, травы шевеля, мы нащиплем щавеля
    

Вывод:

        Количество пробелов: 6, количество других символов: 34
    

Решение:

        text = input()
nospace = text.replace(' ', '')
print(f"Количество пробелов: {text.count(' ')}, количество других символов: {len(nospace)}")

    

Задание 10

Напишите программу, которая принимает строку и две подстроки start и end, а затем определяет, начинается ли строка с фрагмента start, и заканчивается ли подстрокой end. Регистр не учитывать.

Пример ввода:

        Программирование на Python - лучшее хобби
про
про

    

Вывод:

        True
False

    

Решение:

        text, start, end = input().lower(), input(), input()
print(text.startswith(start))
print(text.endswith(end))

    

Подведем итоги

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

***

📖 Содержание самоучителя

  1. Особенности, сферы применения, установка, онлайн IDE
  2. Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
  3. Типы данных: преобразование и базовые операции
  4. Методы работы со строками
  5. Методы работы со списками и списковыми включениями
  6. Методы работы со словарями и генераторами словарей
  7. Методы работы с кортежами
  8. Методы работы со множествами
  9. Особенности цикла for
  10. Условный цикл while
  11. Функции с позиционными и именованными аргументами
  12. Анонимные функции
  13. Рекурсивные функции
  14. Функции высшего порядка, замыкания и декораторы
  15. Методы работы с файлами и файловой системой
  16. Регулярные выражения
  17. Основы скрапинга и парсинга
  18. Основы ООП: инкапсуляция и наследование
  19. Основы ООП – абстракция и полиморфизм
  20. Графический интерфейс на Tkinter

***

Материалы по теме

  • ТОП-15 трюков в Python 3, делающих код понятнее и быстрее

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

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

Ниже рассмотрим операторы, методы и функции, доступные для работы с текстом.

Строковые операторы

Вы уже видели операторы + и * в применении их к числовым значениям в уроке по операторам в Python . Эти два оператора применяются и к строкам.

Оператор сложения строк +

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

>>> s = 'py'
>>> t = 'th'
>>> u = 'on'

>>> s + t
'pyth'
>>> s + t + u
'python'

>>> print('Привет, ' + 'Мир!')
Go team!!!

Оператор умножения строк *

* — оператор создает несколько копий строки. Если s это строка, а n целое число, любое из следующих выражений возвращает строку, состоящую из n объединенных копий s:

s * n
n * s

Вот примеры умножения строк:

>>> s = 'py.'

>>> s * 4
'py.py.py.py.'
>>> 4 * s
'py.py.py.py.'

Значение множителя n должно быть целым положительным числом. Оно может быть нулем или отрицательным, но этом случае результатом будет пустая строка:

>>> 'py' * -6
''

Если вы создадите строковую переменную и превратите ее в пустую строку, с помощью 'py' * -6, кто-нибудь будет справедливо считать вас немного глупым. Но это сработает.

Оператор принадлежности подстроки in

Python также предоставляет оператор принадлежности, который можно использоваться для манипуляций со строками. Оператор in возвращает True, если подстрока входит в строку, и False, если нет:

>>> s = 'Python'
>>> s in 'I love Python.'
True
>>> s in 'I love Java.'
False

Есть также оператор not in, у которого обратная логика:

>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False

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

Функция Описание
chr() Преобразует целое число в символ
ord() Преобразует символ в целое число
len() Возвращает длину строки
str() Изменяет тип объекта на string

Более подробно о них ниже.

Функция ord(c) возвращает числовое значение для заданного символа.

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

Самая простая схема в повседневном использовании называется ASCII . Она охватывает латинские символы, с которыми мы чаще работает. Для этих символов ord(c) возвращает значение ASCII для символа c:

>>> ord('a')
97
>>> ord('#')
35

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

Unicode — это современный стандарт, который пытается предоставить числовой код для всех возможных символов, на всех возможных языках, на каждой возможной платформе. Python 3 поддерживает Unicode, в том числе позволяет использовать символы Unicode в строках.

Функция ord() также возвращает числовые значения для символов Юникода:

>>> ord('€')
8364
>>> ord('∑')
8721

Функция chr(n) возвращает символьное значение для данного целого числа.

chr() действует обратно ord(). Если задано числовое значение n, chr(n) возвращает строку, представляющую символ n:

>>> chr(97)
'a'
>>> chr(35)
'#'

chr() также обрабатывает символы Юникода:

>>> chr(8364)
'€'
>>> chr(8721)
'∑'

Функция len(s) возвращает длину строки.

len(s) возвращает количество символов в строке s:

>>> s = 'Простоя строка.'
>>> len(s)
15

Функция str(obj) возвращает строковое представление объекта.

Практически любой объект в Python может быть представлен как строка. str(obj) возвращает строковое представление объекта obj:

>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('py')
'py'

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

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

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

Индексация строк начинается с нуля: у первого символа индекс 0, следующего 1 и так далее. Индекс последнего символа в python — ‘‘длина строки минус один’’.

Например, схематическое представление индексов строки 'foobar' выглядит следующим образом:

индексация строки в python

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

>>> s = 'foobar'

>>> s[0]
'f'
>>> s[1]
'o'
>>> s[3]
'b'
>>> s[5]
'r'

Попытка обращения по индексу большему чем len(s) - 1, приводит к ошибке IndexError:

>>> s[6]
Traceback (most recent call last):
  File "", line 1, in <module>
    s[6]
IndexError: string index out of range

Индексы строк также могут быть указаны отрицательными числами. В этом случае индексирование начинается с конца строки: -1 относится к последнему символу, -2 к предпоследнему и так далее. Вот такая же диаграмма, показывающая как положительные, так и отрицательные индексы строки 'foobar':

положительные и отрицательные индексы строки

Вот несколько примеров отрицательного индексирования:

>>> s = 'foobar'
>>> s[-1]
'r'
>>> s[-2]
'a'
>>> len(s)
6
>>> s[-len(s)] # отрицательная индексация начинается с -1
'f'

Попытка обращения по индексу меньшему чем -len(s), приводит к ошибке IndexError:

>>> s[-7]
Traceback (most recent call last):
  File "", line 1, in <module>
    s[-7]
IndexError: string index out of range

Для любой непустой строки s, код s[len(s)-1] и s[-1] возвращают последний символ. Нет индекса, который применим к пустой строке.

Срезы строк

Python также допускает возможность извлечения подстроки из строки, известную как ‘‘string slice’’. Если s это строка, выражение формы s[m:n] возвращает часть s, начинающуюся с позиции m, и до позиции n, но не включая позицию:

>>> s = 'python'
>>> s[2:5]
'tho'

Помните: индексы строк в python начинаются с нуля. Первый символ в строке имеет индекс 0. Это относится и к срезу.

Опять же, второй индекс указывает символ, который не включен в результат. Символ 'n' в приведенном выше примере. Это может показаться немного не интуитивным, но дает результат: выражение s[m:n] вернет подстроку, которая является разницей n - m, в данном случае 5 - 2 = 3.

Если пропустить первый индекс, срез начинается с начала строки. Таким образом, s[:m] = s[0:m]:

>>> s = 'python'
>>> s[:4]
'pyth'
>>> s[0:4]
'pyth'

Аналогично, если опустить второй индекс s[n:], срез длится от первого индекса до конца строки. Это хорошая, лаконичная альтернатива более громоздкой s[n:len(s)]:

>>> s = 'python'
>>> s[2:]
'thon'
>>> s[2:len(s)]
'thon'

Для любой строки s и любого целого n числа (0 ≤ n ≤ len(s)), s[:n] + s[n:]будет s:

>>> s = 'python'
>>> s[:4] + s[4:]
'python'
>>> s[:4] + s[4:] == s
True

Пропуск обоих индексов возвращает исходную строку. Это не копия, это ссылка на исходную строку:

>>> s = 'python'
>>> t = s[:]
>>> id(s)
59598496
>>> id(t)
59598496
>>> s is t
True

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

>>> s[2:2]
''
>>> s[4:2]
''

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

>>> s = 'python'
>>> s[-5:-2]
'yth'
>>> s[1:4]
'yth'
>>> s[-5:-2] == s[1:4]
True

Шаг для среза строки

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

Например , для строки 'python' срез 0:6:2 начинается с первого символа и заканчивается последним символом (всей строкой), каждый второй символ пропускается. Это показано на следующей схеме:

срез строки python с шагом 2

Иллюстративный код показан здесь:

>>> s = 'foobar'
>>> s[0:6:2]
'foa'
>>> s[1:6:2]
'obr'

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

>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::5]
'11111'
>>> s[4::5]
'55555'

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

>>> s = 'python'
>>> s[5:0:-2]
'nhy'

В приведенном выше примере, 5:0:-2 означает «начать с последнего символа и делать два шага назад, но не включая первый символ.”

Когда вы идете назад, если первый и второй индексы пропущены, значения по умолчанию применяются так: первый индекс — конец строки, а второй индекс — начало. Вот пример:

>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::-5]
'55555'

Это общая парадигма для разворота (reverse) строки:

>>> s = 'Если так говорит товарищ Наполеон, значит, так оно и есть.'
>>> s[::-1]
'.ьтсе и оно кат ,тичанз ,ноелопаН щиравот тировог кат илсЕ'

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

В Python версии 3.6 был представлен новый способ форматирования строк. Эта функция официально названа литералом отформатированной строки, но обычно упоминается как f-string.

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

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

>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print('Произведение', n, 'на', m, 'равно', prod)
Произведение 20 на 25 равно 500

Но это громоздко. Чтобы выполнить то же самое с помощью f-строки:

  • Напишите f или F перед кавычками строки. Это укажет python, что это f-строка вместо стандартной.
  • Укажите любые переменные для воспроизведения в фигурных скобках ({}).

Код с использованием f-string, приведенный ниже выглядит намного чище:

>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print(f'Произведение {n} на {m} равно {prod}')
Произведение 20 на 25 равно 500

Любой из трех типов кавычек в python можно использовать для f-строки:

>>> var = 'Гав'
>>> print(f'Собака говорит {var}!')
Собака говорит Гав!
>>> print(f"Собака говорит {var}!")
Собака говорит Гав!
>>> print(f'''Собака говорит {var}!''')
Собака говорит Гав!

Изменение строк

Строки — один из типов данных, которые Python считает неизменяемыми, что означает невозможность их изменять. Как вы ниже увидите, python дает возможность изменять (заменять и перезаписывать) строки.

Такой синтаксис приведет к ошибке TypeError:

>>> s = 'python'
>>> s[3] = 't'
Traceback (most recent call last):
  File "", line 1, in <module>
    s[3] = 't'
TypeError: 'str' object does not support item assignment

На самом деле нет особой необходимости изменять строки. Обычно вы можете легко сгенерировать копию исходной строки с необходимыми изменениями. Есть минимум 2 способа сделать это в python. Вот первый:

>>> s = s[:3] + 't' + s[4:]
>>> s
'pytton'

Есть встроенный метод string.replace(x, y):

>>> s = 'python'
>>> s = s.replace('h', 't')
>>> s
'pytton'

Читайте дальше о встроенных методах строк!

Встроенные методы строк в python

В руководстве по типам переменных в python вы узнали, что Python — это объектно-ориентированный язык. Каждый элемент данных в программе python является объектом.

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

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

Синтаксис для вызова метода объекта выглядит следующим образом:

obj.foo(<args>)

Этот код вызывает метод .foo() объекта obj. — аргументы, передаваемые методу (если есть).

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

В приведенных методах аргументы, указанные в квадратных скобках ([]), являются необязательными.

Изменение регистра строки

Методы этой группы выполняют преобразование регистра строки.

string.capitalize() приводит первую букву в верхний регистр, остальные в нижний.

s.capitalize() возвращает копию s с первым символом, преобразованным в верхний регистр, и остальными символами, преобразованными в нижний регистр:

>>> s = 'everyTHing yoU Can IMaGine is rEAl'
>>> s.capitalize()
'Everything you can imagine is real'

Не алфавитные символы не изменяются:

>>> s = 'follow us @PYTHON'
>>> s.capitalize()
'Follow us @python'

string.lower() преобразует все буквенные символы в строчные.

s.lower() возвращает копию s со всеми буквенными символами, преобразованными в нижний регистр:

>>> 'everyTHing yoU Can IMaGine is rEAl'.lower()
'everything you can imagine is real'

string.swapcase() меняет регистр буквенных символов на противоположный.

s.swapcase() возвращает копию s с заглавными буквенными символами, преобразованными в строчные и наоборот:

>>> 'everyTHing yoU Can IMaGine is rEAl'.swapcase()
'EVERYthING YOu cAN imAgINE IS ReaL'

string.title() преобразует первые буквы всех слов в заглавные

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

>>> 'the sun also rises'.title()
'The Sun Also Rises'

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

>>> 'follow us @PYTHON'.title()
'Follow Us @Python'

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

s.upper() возвращает копию s со всеми буквенными символами в верхнем регистре:

>>> 'follow us @PYTHON'.upper()
'FOLLOW US @PYTHON'

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

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

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

string.count([, [, ]]) подсчитывает количество вхождений подстроки в строку.

s.count() возвращает количество точных вхождений подстроки в s:

>>> 'foo goo moo'.count('oo')
3

Количество вхождений изменится, если указать и :

>>> 'foo goo moo'.count('oo', 0, 8)
2

string.endswith([, [, ]]) определяет, заканчивается ли строка заданной подстрокой.

s.endswith() возвращает, True если s заканчивается указанным и False если нет:

>>> 'python'.endswith('on')
True
>>> 'python'.endswith('or')
False

Сравнение ограничено подстрокой, между и , если они указаны:

>>> 'python'.endswith('yt', 0, 4)
True
>>> 'python'.endswith('yt', 2, 4)
False

string.find([, [, ]]) ищет в строке заданную подстроку.

s.find() возвращает первый индекс в s который соответствует началу строки :

>>> 'Follow Us @Python'.find('Us')
7

Этот метод возвращает, -1 если указанная подстрока не найдена:

>>> 'Follow Us @Python'.find('you')
-1

Поиск в строке ограничивается подстрокой, между и , если они указаны:

>>> 'Follow Us @Python'.find('Us', 4)
7
>>> 'Follow Us @Python'.find('Us', 4, 7)
-1

string.index([, [, ]]) ищет в строке заданную подстроку.

Этот метод идентичен .find(), за исключением того, что он вызывает исключение ValueError, если не найден:

>>> 'Follow Us @Python'.index('you')
Traceback (most recent call last):
  File "", line 1, in <module>
    'Follow Us @Python'.index('you')
ValueError: substring not found

string.rfind([, [, ]]) ищет в строке заданную подстроку, начиная с конца.

s.rfind() возвращает индекс последнего вхождения подстроки в s, который соответствует началу :

>>> 'Follow Us @Python'.rfind('o')
15

Как и в .find(), если подстрока не найдена, возвращается -1:

>>> 'Follow Us @Python'.rfind('a')
-1

Поиск в строке ограничивается подстрокой, между и , если они указаны:

>>> 'Follow Us @Python'.rfind('Us', 0, 14)
7
>>> 'Follow Us @Python'.rfind('Us', 9, 14)
-1

string.rindex([, [, ]]) ищет в строке заданную подстроку, начиная с конца.

Этот метод идентичен .rfind(), за исключением того, что он вызывает исключение ValueError, если не найден:

>>> 'Follow Us @Python'.rindex('you')
Traceback (most recent call last):
  File "", line 1, in <module>
    'Follow Us @Python'.rindex('you')
ValueError: substring not found

string.startswith([, [, ]]) определяет, начинается ли строка с заданной подстроки.

s.startswith() возвращает, True если s начинается с указанного и False если нет:

>>> 'Follow Us @Python'.startswith('Fol')
True
>>> 'Follow Us @Python'.startswith('Go')
False

Сравнение ограничено подстрокой, между и , если они указаны:

>>> 'Follow Us @Python'.startswith('Us', 7)
True
>>> 'Follow Us @Python'.startswith('Us', 8, 16)
False

Классификация строк

Методы в этой группе классифицируют строку на основе символов, которые она содержит.

string.isalnum() определяет, состоит ли строка из букв и цифр.

s.isalnum() возвращает True, если строка s не пустая, а все ее символы буквенно-цифровые (либо буква, либо цифра). В другом случае False :

>>> 'abc123'.isalnum()
True
>>> 'abc$123'.isalnum()
False
>>> ''.isalnum()
False

string.isalpha() определяет, состоит ли строка только из букв.

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

>>> 'ABCabc'.isalpha()
True
>>> 'abc123'.isalpha()
False

string.isdigit() определяет, состоит ли строка из цифр (проверка на число).

s.digit() возвращает True когда строка s не пустая и все ее символы являются цифрами, а в False если нет:

>>> '123'.isdigit()
True
>>> '123abc'.isdigit()
False

string.isidentifier() определяет, является ли строка допустимым идентификатором Python.

s.isidentifier() возвращает True, если s валидный идентификатор (название переменной, функции, класса и т.д.) python, а в False если нет:

>>> 'foo32'.isidentifier()
True
>>> '32foo'.isidentifier()
False
>>> 'foo$32'.isidentifier()
False

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

>>> 'and'.isidentifier()
True

Вы можете проверить, является ли строка ключевым словом Python, используя функцию iskeyword(), которая находится в модуле keyword. Один из возможных способов сделать это:

>>> from keyword import iskeyword
>>> iskeyword('and')
True

Если вы действительно хотите убедиться, что строку можно использовать как идентификатор python, вы должны проверить, что .isidentifier() = True и iskeyword() = False.

string.islower() определяет, являются ли буквенные символы строки строчными.

s.islower() возвращает True, если строка s не пустая, и все содержащиеся в нем буквенные символы строчные, а False если нет. Не алфавитные символы игнорируются:

>>> 'abc'.islower()
True
>>> 'abc1$d'.islower()
True
>>> 'Abc1$D'.islower()
False

string.isprintable() определяет, состоит ли строка только из печатаемых символов.

s.isprintable() возвращает, True если строка s пустая или все буквенные символы которые она содержит можно вывести на экран. Возвращает, False если s содержит хотя бы один специальный символ. Не алфавитные символы игнорируются:

>>> 'atb'.isprintable() # t - символ табуляции
False
>>> 'a b'.isprintable()
True
>>> ''.isprintable()
True
>>> 'anb'.isprintable() # n - символ перевода строки
False

Важно: Это единственный .is****() метод, который возвращает True, если s пустая строка. Все остальные возвращаются False.

string.isspace() определяет, состоит ли строка только из пробельных символов.

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

Наиболее часто встречающиеся пробельные символы — это пробел ' ', табуляция 't' и новая строка 'n':

>>> ' t  n '.isspace()
True
>>> ' a '.isspace()
False

Тем не менее есть несколько символов ASCII, которые считаются пробелами. И если учитывать символы Юникода, их еще больше:

>>> 'fu2005r'.isspace()
True

'f' и 'r' являются escape-последовательностями для символов ASCII; 'u2005' это escape-последовательность для Unicode.

string.istitle() определяет, начинаются ли слова строки с заглавной буквы.

s.istitle() возвращает True когда s не пустая строка и первый алфавитный символ каждого слова в верхнем регистре, а все остальные буквенные символы в каждом слове строчные. Возвращает False, если нет:

>>> 'This Is A Title'.istitle()
True
>>> 'This is a title'.istitle()
False
>>> 'Give Me The #$#@ Ball!'.istitle()
True

string.isupper() определяет, являются ли буквенные символы строки заглавными.

s.isupper() возвращает True, если строка s не пустая, и все содержащиеся в ней буквенные символы являются заглавными, и в False, если нет. Не алфавитные символы игнорируются:

>>> 'ABC'.isupper()
True
>>> 'ABC1$D'.isupper()
True
>>> 'Abc1$D'.isupper()
False

Выравнивание строк, отступы

Методы в этой группе влияют на вывод строки.

string.center([, ]) выравнивает строку по центру.

s.center() возвращает строку, состоящую из s выровненной по ширине . По умолчанию отступ состоит из пробела ASCII:

>>> 'py'.center(10)
'    py    '

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

>>> 'py'.center(10, '-')
'----py----'

Если s больше или равна , строка возвращается без изменений:

>>> 'python'.center(2)
'python'

string.expandtabs(tabsize=8) заменяет табуляции на пробелы

s.expandtabs() заменяет каждый символ табуляции ('t') пробелами. По умолчанию табуляция заменяются на 8 пробелов:

>>> 'atbtc'.expandtabs()
'a       b       c'
>>> 'aaatbbbtc'.expandtabs()
'aaa     bbb     c'

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

>>> 'atbtc'.expandtabs(4)
'a   b   c'
>>> 'aaatbbbtc'.expandtabs(tabsize=4)
'aaa bbb c'

string.ljust([, ]) выравнивание по левому краю строки в поле.

s.ljust() возвращает строку s, выравненную по левому краю в поле шириной . По умолчанию отступ состоит из пробела ASCII:

>>> 'python'.ljust(10)
'python    '

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

>>> 'python'.ljust(10, '-')
'python----'

Если s больше или равна , строка возвращается без изменений:

>>> 'python'.ljust(2)
'python'

string.lstrip([]) обрезает пробельные символы слева

s.lstrip()возвращает копию s в которой все пробельные символы с левого края удалены:

>>> '   foo bar baz   '.lstrip()
'foo bar baz   '
>>> 'tnfootnbartnbaz'.lstrip()
'footnbartnbaz'

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

>>> 'https://www.pythonru.com'.lstrip('/:pths')
'www.pythonru.com'

string.replace(, [, ]) заменяет вхождения подстроки в строке.

s.replace(, ) возвращает копию s где все вхождения подстроки , заменены на :

>>> 'I hate python! I hate python! I hate python!'.replace('hate', 'love')
'I love python! I love python! I love python!'

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

>>> 'I hate python! I hate python! I hate python!'.replace('hate', 'love', 2)
'I love python! I love python! I hate python!'

string.rjust([, ]) выравнивание по правому краю строки в поле.

s.rjust() возвращает строку s, выравненную по правому краю в поле шириной . По умолчанию отступ состоит из пробела ASCII:

>>> 'python'.rjust(10)
'    python'

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

>>> 'python'.rjust(10, '-')
'----python'

Если s больше или равна , строка возвращается без изменений:

>>> 'python'.rjust(2)
'python'

string.rstrip([]) обрезает пробельные символы справа

s.rstrip() возвращает копию s без пробельных символов, удаленных с правого края:

>>> '   foo bar baz   '.rstrip()
'   foo bar baz'
>>> 'footnbartnbaztn'.rstrip()
'footnbartnbaz'

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

>>> 'foo.$$$;'.rstrip(';$.')
'foo'

string.strip([]) удаляет символы с левого и правого края строки.

s.strip() эквивалентно последовательному вызову s.lstrip()и s.rstrip(). Без аргумента метод удаляет пробелы в начале и в конце:

>>> s = '   foo bar bazttt'
>>> s = s.lstrip()
>>> s = s.rstrip()
>>> s
'foo bar baz'

Как в .lstrip() и .rstrip(), необязательный аргумент определяет набор символов, которые будут удалены:

>>> 'www.pythonru.com'.strip('w.moc')
'pythonru'

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

>>> '   foo bar bazttt'.lstrip().rstrip()
'foo bar baz'
>>> '   foo bar bazttt'.strip()
'foo bar baz'

>>> 'www.pythonru.com'.lstrip('w.').rstrip('.moc')
'pythonru'
>>> 'www.pythonru.com'.strip('w.moc')
'pythonru'

string.zfill() дополняет строку нулями слева.

s.zfill() возвращает копию s дополненную '0' слева для достижения длины строки указанной в :

>>> '42'.zfill(5)
'00042'

Если s содержит знак перед цифрами, он остается слева строки:

>>> '+42'.zfill(8)
'+0000042'
>>> '-42'.zfill(8)
'-0000042'

Если s больше или равна , строка возвращается без изменений:

>>> '-42'.zfill(3)
'-42'

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

>>> 'foo'.zfill(6)
'000foo'

Методы преобразование строки в список

Методы в этой группе преобразовывают строку в другой тип данных и наоборот. Эти методы возвращают или принимают итерируемые объекты — термин Python для последовательного набора объектов.

Многие из этих методов возвращают либо список, либо кортеж. Это два похожих типа данных, которые являются прототипами примеров итераций в python. Список заключен в квадратные скобки ( []), а кортеж заключен в простые (()).

Теперь давайте посмотрим на последнюю группу строковых методов.

string.join() объединяет список в строку.

s.join() возвращает строку, которая является результатом конкатенации объекта с разделителем s.

Обратите внимание, что .join() вызывается строка-разделитель s . должна быть последовательностью строковых объектов.

Примеры кода помогут вникнуть. В первом примере разделителем s является строка ', ', а список строк:

>>> ', '.join(['foo', 'bar', 'baz', 'qux'])
'foo, bar, baz, qux'

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

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

>>> list('corge')
['c', 'o', 'r', 'g', 'e']

>>> ':'.join('corge')
'c:o:r:g:e'

Таким образом, результатом ':'.join('corge') является строка, состоящая из каждого символа в 'corge', разделенного символом ':'.

Этот пример завершается с ошибкой TypeError, потому что один из объектов в не является строкой:

>>> '---'.join(['foo', 23, 'bar'])
Traceback (most recent call last):
  File "", line 1, in <module>
    '---'.join(['foo', 23, 'bar'])
TypeError: sequence item 1: expected str instance, int found

Это можно исправить так:

>>> '---'.join(['foo', str(23), 'bar'])
'foo---23---bar'

Как вы скоро увидите, многие объекты в Python можно итерировать, и .join() особенно полезен для создания из них строк.

string.partition() делит строку на основе разделителя.

s.partition() отделяет от s подстроку длиной от начала до первого вхождения . Возвращаемое значение представляет собой кортеж из трех частей:

  • Часть s до
  • Разделитель
  • Часть s после

Вот пара примеров .partition()в работе:

>>> 'foo.bar'.partition('.')
('foo', '.', 'bar')
>>> 'foo@@bar@@baz'.partition('@@')
('foo', '@@', 'bar@@baz')

Если не найден в s, возвращаемый кортеж содержит s и две пустые строки:

>>> 'foo.bar'.partition('@@')
('foo.bar', '', '')

s.rpartition() делит строку на основе разделителя, начиная с конца.

s.rpartition() работает как s.partition(), за исключением того, что s делится при последнем вхождении вместо первого:

>>> 'foo@@bar@@baz'.partition('@@')
('foo', '@@', 'bar@@baz')

>>> 'foo@@bar@@baz'.rpartition('@@')
('foo@@bar', '@@', 'baz')

string.rsplit(sep=None, maxsplit=-1) делит строку на список из подстрок.

Без аргументов s.rsplit() делит s на подстроки, разделенные любой последовательностью пробелов, и возвращает список:

>>> 'foo bar baz qux'.rsplit()
['foo', 'bar', 'baz', 'qux']
>>> 'foontbar   bazrfqux'.rsplit()
['foo', 'bar', 'baz', 'qux']

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

>>> 'foo.bar.baz.qux'.rsplit(sep='.')
['foo', 'bar', 'baz', 'qux']

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

Когда явно указан в качестве разделителя s, последовательные повторы разделителя будут возвращены как пустые строки:

>>> 'foo...bar'.rsplit(sep='.')
['foo', '', '', 'bar']

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

>>> 'footttbar'.rsplit()
['foo', 'bar']

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

>>> 'www.pythonru.com'.rsplit(sep='.', maxsplit=1)
['www.pythonru', 'com']

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

>>> 'www.pythonru.com'.rsplit(sep='.', maxsplit=-1)
['www', 'pythonru', 'com']
>>> 'www.pythonru.com'.rsplit(sep='.')
['www', 'pythonru', 'com']

string.split(sep=None, maxsplit=-1) делит строку на список из подстрок.

s.split() ведет себя как s.rsplit(), за исключением того, что при указании , деление начинается с левого края s:

>>> 'www.pythonru.com'.split('.', maxsplit=1)
['www', 'pythonru.com']
>>> 'www.pythonru.com'.rsplit('.', maxsplit=1)
['www.pythonru', 'com']

Если не указано, между .rsplit() и .split() в python разницы нет.

string.splitlines([]) делит текст на список строк.

s.splitlines() делит s на строки и возвращает их в списке. Любой из следующих символов или последовательностей символов считается границей строки:

Разделитель Значение
n Новая строка
r Возврат каретки
rn Возврат каретки + перевод строки
v или же x0b Таблицы строк
f или же x0c Подача формы
x1c Разделитель файлов
x1d Разделитель групп
x1e Разделитель записей
x85 Следующая строка
u2028 Новая строка (Unicode)
u2029 Новый абзац (Unicode)

Вот пример использования нескольких различных разделителей строк:

>>> 'foonbarrnbazfquxu2028quux'.splitlines()
['foo', 'bar', 'baz', 'qux', 'quux']

Если в строке присутствуют последовательные символы границы строки, они появятся в списке результатов, как пустые строки:

>>> 'foofffbar'.splitlines()
['foo', '', '', 'bar']

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

>>> 'foonbarnbaznqux'.splitlines(True)
['foon', 'barn', 'bazn', 'qux']
>>> 'foonbarnbaznqux'.splitlines(8)
['foon', 'barn', 'bazn', 'qux']

Заключение

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

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

  • Списки python
  • Кортежи (tuple)

Добавить комментарий