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

Оригинал - https://docs.python.org/3/library/stdtypes.html#string-methods

str.capitalize() — Возвращает копию строки с первым символом в верхнем регистре, и остальными - в нижнем.

str.casefold() — Возвращает копию строки в "свёрнутом" регистре. Такая строка может быть использована для регистронезависимого сравнения. Свёртка регистра похожа на приведение в нижний регистр, но является более агрессивным, поскольку призвано удалить все регистровые различия в строке. Например, немецкая строчная буква 'ß' эквивалентна 'ss'. Поскольку она уже является строчной, lower ничего не сделает с 'ß'; casefold преобразует ее в 'ss'.

str.center(width[, fillchar]) — Возвращает центрированную строку длиной width. Вставка выполняется с помощью указанного fillchar (по умолчанию - ASCII-пробел). Возвращается исходная строка, если ширина меньше или равна len(s).

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

str.encode(encoding="utf-8", errors="strict") — Возвращает строку, закодированную в bytes. encoding по умолчанию принимает значение 'utf-8'; errors управляет тем, как обрабатываются ошибки кодировки. Если 'strict' (по умолчанию), то будет вызвано исключение UnicodeError. Другие возможные значения: 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' и любые другие имена, зарегистрированные через codecs.register_error.

str.endswith(suffix[, start[, end]]) — Возвращает True, если строка заканчивается указанным suffix, в противном случае возвращает False. suffix также может быть кортежем суффиксов для поиска. При указании start проверка начинается с этой позиции. При указании end - проверка прекращается на этой позиции.

str.expandtabs(tabsize=8) — Возвращает копию строки, в которой все символы табуляции заменены одним или несколькими пробелами, в зависимости от текущего столбца и заданного размера табуляции. Позиции табуляции возникают через каждые tabsize символов (по умолчанию 8, что дает позиции табуляции в столбцах 0, 8, 16 и так далее). Чтобы расширить строку, текущий столбец устанавливается в ноль, и строка просматривается посимвольно. Если символ является табуляцией (\t), то в результат вставляется один или несколько символов пробела до тех пор, пока текущий столбец не станет равным следующей позиции табуляции. (Если символ является новой строкой (\n) или возвратом каретки (\r), то он копируется, а текущий столбец обнуляется. Любой другой символ копируется без изменений, а текущий столбец увеличивается на единицу, независимо от того, как этот символ будет представлен при печати.

>>> '01\t012\t0123\t01234'.expandtabs()
'01      012     0123    01234'
>>> '01\t012\t0123\t01234'.expandtabs(4)
'01  012 0123    01234'

str.find(sub[, start[, end]]) — Возвращает наименьший индекс в строке, где находится подстрока sub (в пределах среза [start:end]). Необязательные аргументы start и end интерпретируются в нотации среза. Возвращает -1, если sub не найдена.

Метод str.find следует использовать только в том случае, если вам нужно знать позицию sub. Чтобы просто проверить, является ли sub подстрокой или нет, используйте оператор in.

>>> 'Py' in 'Python'
True

str.format(*args, **kwargs) — Выполняет операцию форматирования строки. Строка, для которой вызывается этот метод, может содержать текст или поля замены, разграниченные скобками {}. Каждое поле замены содержит либо числовой индекс позиционного аргумента, либо имя ключевого аргумента. Возвращает копию строки, в которой каждое поле замены заменено на строковое значение соответствующего аргумента.

>>> "The sum of 1 + 2 is {0}".format(1+2)
'The sum of 1 + 2 is 3'

str.format_map(mapping, /) — Аналогично str.format(**mapping), за исключением того, что mapping используется напрямую, а не копируется в dict. Это полезно, если, например, mapping является подклассом dict:

>>> class Default(dict):
...     def __missing__(self, key):
...         return key
...
>>> '{name} was born in {country}'.format_map(Default(name='Guido'))
'Guido was born in country'

str.index(sub[, start[, end]]) — Как str.find, но выдает ValueError, если подстрока не найдена.

str.isalnum() — Возвращает True, если все символы в строке алфавитно-цифровые и в ней есть хотя бы хотя бы один символ, False в противном случае. Символ c является алфавитно-цифровым, если одно из следующих условий из следующих возвращает True: c.isalpha(), c.isdecimal(), c.isdigit(), или c.isnumeric().

str.isalpha() — Возвращает True, если все символы в строке алфавитные и в ней есть хотя бы один символ, False в противном случае. Алфавитные символы - это символы, определенные в базе данных символов Unicode как "Letter", т.е. те, у которых свойство общей категории "Lm", "Lt", "Lu", "Ll" или "Lo".

str.isascii() — Возвращает True, если строка пуста или все символы в ней ASCII, False в противном случае. Символы ASCII имеют коды символов в диапазоне U+0000-U+007F.

str.isdecimal() — Возвращает True, если все символы в строке десятичные и в ней есть хотя бы один символ, False в противном случае. Десятичные символы - это символы, которые могут быть использованы для формирования чисел по основанию 10, например U+0660, ARABIC-INDIC DIGIT ZERO. Формально десятичный символ - это символ в общей категории Unicode "Nd".

str.isdigit() — Возвращает True, если все символы в строке являются цифрами и в ней есть хотя бы один символ, False в противном случае. Формально цифра - это символ, имеющий значение значение свойства Numeric_Type=Digit или Numeric_Type=Decimal.

str.isidentifier() — Возвращает True, если строка является допустимым идентификатором в соответствии с определением языка Python.

keyword.iskeyword можно использовать для проверки того, является ли строка s зарезервированным идентификатором, таким как def и class.

>>> from keyword import iskeyword

>>> 'hello'.isidentifier(), iskeyword('hello')
(True, False)
>>> 'def'.isidentifier(), iskeyword('def')
(True, True)

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

str.isnumeric() — Возвращает True, если все символы в строке являются числовыми и в ней есть хотя бы один символ, False в противном случае. К числовым символам относятся символы цифр и все символы, имеющие свойство Unicode numeric value, например, U+2155, VULGAR FRACTION ONE FIFTH. Формально числовыми считаются символы со значением свойства Numeric_Type=Digit, Numeric_Type=Decimal или Numeric_Type=Numeric.

str.isprintable() — Возвращает True, если все символы в строке являются печатными или строка пуста, False в противном случае. Непечатаемые символы - это символы, определенные в базе данных символов Unicode как "Other" или "Separator", за исключением ASCII-пробела (0x20), который считается печатаемым. (Обратите внимание, что печатаемые символы в данном контексте - это те, которые не должны экранироваться при вызове repr для строки. Это никак не влияет на обработку строк, записанных в sys.stdout или sys.stderr).

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

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

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

str.join(iterable) — Возвращает строку, которая является конкатенацией строк в iterable. Если в iterable имеются какие-либо нестроковые значения, включая объекты bytes, будет выдана ошибка TypeError. Разделителем между элементами является строка, чей метод вызывается.

str.ljust(width[, fillchar]) — Возвращает строку, выровненную по левому краю в строке длины width. Для вставки используется указанный fillchar (по умолчанию - ASCII пробел). Исходная строка возвращается, если width меньше или равна len(s).

str.lower() — Возвращает копию строки с преобразованными в нижний регистр символами.

str.lstrip([chars]) — Возвращает копию строки с удаленными ведущими символами. Аргумент chars представляет собой строку, указывающую набор символов, которые необходимо удалить. Если аргумент chars опущен или None, то по умолчанию удаляются пробельные символы. Аргумент chars не является префиксом; все комбинации его значений удаляются:

>>> '   spacious   '.lstrip()
'spacious   '
>>> 'www.example.com'.lstrip('cmowz.')
'example.com'

str.maketrans(x[, y[, z]]) — Этот статический метод возвращает таблицу переводов, используемую для str.translate.

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

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

str.partition(sep) — Разделяет строку по первому вхождению sep и возвращает 3-кортеж, содержащий часть перед разделителем, сам разделитель и часть после разделителя. Если разделитель не найден, возвращается 3-кортеж, содержащий саму строку, за которой следуют две пустые строки.

str.removeprefix(prefix, /) — Если строка начинается со строки prefix, возвращает string[len(prefix):]. В противном случае возвращается копия исходной строки

>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'BaseTestCase'.removeprefix('Test')
'BaseTestCase'

str.removesuffix(suffix, /) — Если строка заканчивается строкой suffix и этот suffix не пуст, верните string[:-len(suffix)]. В противном случае возвращается копия исходной строки

>>> 'MiscTests'.removesuffix('Tests')
'Misc'
>>> 'TmpDirMixin'.removesuffix('Tests')
'TmpDirMixin'

str.replace(old, new, count=-1) — Возвращает копию строки, в которой все вхождения подстроки old заменены на new. Если указано count, то заменяются только первые count вхождений. Если count не указано или -1, то заменяются все вхождения.

str.rfind(sub[, start[, end]]) — Возвращает наибольший индекс в строке, в которой найдена подстрока sub, такая, что sub содержится в пределах [start:end]. Необязательные аргументы start и end интерпретируются в нотации slice. Возвращает -1 при неудаче.

str.rindex(sub[, start[, end]]) — Как rfind, но выдает ValueError, если подстрока sub не найдена.

str.rjust(width[, fillchar]) — Возвращает строку, выровненную по правому краю в строке длины width. Для вставки используется указанный fillchar (по умолчанию - ASCII пробел). Исходная строка возвращается, если width меньше или равна len(s).

str.rpartition(sep) — Разделяет строку по последнему вхождению sep и возвращает 3-кортеж, содержащий часть перед разделителем, сам разделитель и часть после разделителя. Если разделитель не найден, возвращается кортеж, содержащий две пустые строки, а затем саму строку.

str.rsplit(sep=None, maxsplit=-1) — Возвращает список слов в строке, используя sep в качестве строки-разделителя. Если задано maxsplit, то выполняется не более maxsplit разбиений, причем самые правые. Если sep не указан или None, то разделителем будет любая пробельная строка. За исключением разбиения справа, rsplit ведет себя как split, который подробно описан ниже.

str.rstrip([chars]) — Возвращает копию строки с удаленными крайними правыми символами. Аргумент chars - это строка, задающая набор символов, которые необходимо удалить. Если аргумент chars опущен или None, то по умолчанию удаляются пробельные символы. Аргумент chars не является суффиксом; удаляются все комбинации его значений

>>> '   spacious   '.rstrip()
'   spacious'
>>> 'mississippi'.rstrip('ipz')
'mississ'

str.split(sep=None, maxsplit=-1) — Возвращает список слов в строке, используя sep в качестве строки-разделителя. Если задано maxsplit, то будет выполнено не более maxsplit разбиений (таким образом, список будет содержать не более maxsplit+1 элементов). Если maxsplit не указан или -1, то количество разбиений не ограничено (выполняются все возможные разбиения).

Если указан sep, то последовательные разделители не группируются вместе и считаются считаются разделителями пустых строк (например, '1,,2'.split(',') возвращает ['1', '', '2']). Аргумент sep может состоять из нескольких символов (например, '1<>2<>3'.split('<>') возвращает ['1'', '2'', '3']). Разделение пустой строки с указанным разделителем возвращает [''].

Например:

>>> '1,2,3'.split(',')
['1', '2', '3']
>>> '1,2,3'.split(',', maxsplit=1)
['1', '2,3']
>>> '1,2,,3,'.split(',')
['1', '2', '', '3', '']

Если sep не указан или равен None, применяется другой алгоритм разбиения: последовательные пробельные символы рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или в конце, если в строке есть передние или задние пробельные символы. Следовательно, при разбиении пустой строки или строки, состоящей из одних пробельных символов, с разделителем None возвращается [].

Например:

>>> '1 2 3'.split()
['1', '2', '3']
>>> '1 2 3'.split(maxsplit=1)
['1', '2 3']
>>> '   1   2   3   '.split()
['1', '2', '3']

str.splitlines(keepends=False) — Возвращает список строк в строке с разрывом на границах строк. Разрывы строк не включаются в результирующий список, если только не задано значение keepends, равное True.

Например:

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']
>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']

В отличие от ~str.split, когда задана строка-разделитель sep, этот метод возвращает пустой список для пустой строки, и перевод строки не приводит к появлению дополнительной строки

>>> "".splitlines()
[]
>>> "One line\n".splitlines()
['One line']

Для сравнения, split('\n') даёт:

>>> ''.split('\n')
['']
>>> 'Two lines\n'.split('\n')
['Two lines', '']

str.startswith(prefix[, start[, end]]) — Возвращает True, если строка начинается с prefix, в противном случае возвращает False. prefix также может быть кортежем префиксов для поиска. При необязательном start проверяется строка, начинающаяся с этой позиции. С необязательным end - прекратить сравнение строки на этой позиции.

str.strip([chars]) — Возвращает копию строки с удаленными крайними символами. Аргумент chars представляет собой строку, указывающую набор символов, которые необходимо удалить. Если аргумент chars опущен или None, то по умолчанию удаляются пробельные символы. Аргумент chars не является префиксом или суффиксом; все комбинации его значений удаляются

>>> '   spacious   '.strip()
'spacious'
>>> 'www.example.com'.strip('cmowz.')
'example'

str.swapcase() — Возвращает копию строки, в которой прописные символы преобразованы в строчные и наоборот. Обратите внимание, что не обязательно верно, что s.swapcase().swapcase() == s.

str.title() — Возвращает версию строки, в которой слова начинаются с символа в верхнем регистре, а остальные - в нижнем.

>>> 'Hello world'.title()
'Hello World'

str.translate(table) — Возвращает копию строки, в которой каждый символ был отображен через заданную таблицу перевода. Таблица должна быть объектом, который реализует индексацию через object.__getitem__, обычно это mapping или sequence. При индексации по порядковому номеру Unicode (целому числу) объект таблицы может выполнить одно из следующих действий: вернуть порядковый номер Unicode или строку, чтобы сопоставить символ с одним или несколькими другими символами; вернуть None, чтобы удалить символ из возвращаемой строки; или вызвать исключение LookupError`, чтобы сопоставить символ с самим собой.

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

str.upper() — Возвращает копию строки со всеми символами, преобразованными в верхний регистр. Обратите внимание, что s.upper().isupper() может быть False, если s содержит символы без регистра или если категория Unicode результирующего символа(ов) не "Lu" (Letter, uppercase), а, например, "Lt" (Letter, titlecase).

str.zfill(width) — Возвращает копию строки, заполненную цифрами ASCII '0', чтобы получилась строка длины width. Префикс ведущего знака ('+'/ '-') обрабатывается путем вставки прокладки после символа знака, а не перед ним. Исходная строка возвращается, если width меньше или равна len(s). Например:

>>> "42".zfill(5)
'00042'
>>> "-42".zfill(5)
'-0042'