2022-11-15
#python
Шпаргалка по строкам (str) в Python
Создание строк
Строки являются неизменяемыми упорядоченными коллекциями.
Строковые литералы
Простые строки:
s = 'string' # 'string'
s = "string" # 'string'
s = str(123) # '123'
Многострочные блоки:
s = '''1
2
3'''
s = """1
2
3"""
# 1
# 2
# 3
Ввод из консоли
s = input([str])
Записывает строки из стандартного ввода. str — текст, который выводится в консоль перед вводом.
s = sys.stdin.readline([n])
Более быстрая версия. Можно ограничить максимум считываемых символов, указав n.
Вариации строк
r'' — сырые строки. Подавляют экранирование.
b'' — строки битов.
f'{x}' — форматированные строки (f-строки).
Операции со строками
| Способ | Пример | Результат |
|---|---|---|
| Конкатенация | 'a' + 'b' |
'ab' |
| Дублирование | 'a' * 3 |
'aaa' |
| Взятие по индексу | 'abc'[1] |
'b' |
| Срезы | 'abcde'[3:1:-1] |
'dc' |
Форматирование строк
Стандартные средства
| Способ | Пример |
|---|---|
| оператор % | "Принято: %a шт. Отправлено: %d шт." % (x, y) |
| format() | "Принято: {} шт. Отправлено: {} шт.".format(x, y) |
| f-строки | f"Принято: {x} шт. Отправлено: {y} шт." |
Шаблоны
from string import Template
t = Template('Принято: $x шт. Отправлено: $y шт.')
t.substitute(x=2, y=1)
# Принято: 2 шт. Отправлено: 1 шт.
Служебные символы
| Символ | Назначение | Пример | Результат |
|---|---|---|---|
| \n | Перевод строки | 'ab\ncd' |
ab |
| cd | |||
| \ | Экранирование | 'ab\\ncd' |
ab\ncd |
| \a | Звонок | 'a\aa' |
aa |
| \b | Забой | 'ab\ba' |
ac |
| \f | Перевод страницы | 'a\fa' |
aa |
| \r | Возврат каретки | 'ab\rcd' |
cd |
| \t | Горизонтальная табуляция | 'a\ta' |
a a |
| \v | Вертикальная табуляция | 'a\va' |
aa |
| \N{id} | Символ Юникода по id |
'\N{Degree Sign}' |
° |
| \uhhhh | 16-ричный символ Юникода | '\u2030' |
‰ |
| \Uhhhh… | 32-ичный символ Юникода | '\U00000394' |
Δ |
| \xhh | 16-ричное значение символа | '\x2A' |
* |
| \ooo | восьмеричное значение символа | '/275' |
½ |
| \0 | символ Null | '\0' |
Методы строк
| Метод | Назначение |
|---|---|
| s.capitalize() | переводит первую букву в верхний, а остальные в нижний регистр. |
| s.casefold() | переводит все символы в нижний регистр |
| s.center(width[, fillvalue]) | обрамляет значениями fillvalue строку, пока длина не станет width |
| s.count(str[, start][, end] | считает количество подстрок str в выбранном промежутке строки |
| s.encode(encoding, errors) | меняет кодировку строки |
| s.endswith(suffix[, start][, end]) | возвращает True если строка заканчивается на suffix, иначе False |
| s.expandtabs(tabsize=8) | увеличивает размер символов табуляции до tabsize пробелов |
| s.find(str[, start][, end]) | возвращает индекс начала первой подстроки str в выбранном промежутке или -1, если она не найдена |
| s.format(args, *kwargs) | последовательно заменяет {} в строке на свои аргументы |
| s.format_map(dict) | заменяет {<val>} в строке на dict[<val>] |
| s.index(str[, start][, end]) | возвращает индекс начала первой подстроки str в выбранном промежутке или ValueError, если она не найдена |
| s.isalnum() | возвращает True, если строка состоит только из букв и цифр, иначе False |
| s.isalpha() | возвращает True, если строка состоит только из букв, иначе False |
| s.isdecimal() | возвращает True, если строка состоит только из цифр, иначе False [1] |
| s.isdigit() | возвращает True, если строка состоит только из цифр, иначе False [1] |
| s.isidentifier() | возвращает True, если строка является идентификатором (if, class, assert), иначе False |
| s.islower() | возвращает True, если вся строка в нижнем регистре, иначе False |
| s.isnumeric() | возвращает True, если строка состоит только из цифр, иначе False [1] |
| s.isprintable() | возвращает True, если все символы строки отображаются, иначе False (например, \n, \t) |
| s.isspace() | возвращает True, если строка состоит из пробелов, иначе False |
| s.istitle() | возвращает True, если строка начинается с заглавной буквы, а остальные — строчные, иначе False |
| s.isupper() | возвращает True, если строка в верхнем регистре, иначе False |
| s.join(iter) | склеивает элементы последовательности iter в одну строку с разделителем s |
| s.ljust(width, fillchar=' ') | добавляет в конец строки символ fillchar, пока длина не станет width |
| s.lower() | переводит символы строки в нижний регистр |
| s.lstrip([chars]) | возвращает строку без пробельных символов или chars в начале |
| s.maketrans(*args) | возвращает таблицу перевода для s.translate |
| s.partition(sep) | разделяет строку на три части по первому разделителю sep: [начало, sep, конец] |
| s.replace(old, new) | заменяет все подстроки old на new |
| s.rfind(str[, start][, end]) | возвращает индекс начала последней подстроки str в выбранном промежутке или -1, если она не найдена |
| s.rindex(str[, start][, end]) | возвращает индекс начала последней подстроки str в выбранном промежутке или ValueError, если она не найдена |
| s.rjust(width, fillchar=' ') | добавляет в начало строки символ fillchar, пока длина не станет width |
| s.rpartition() | разделяет строку на три части по последнему разделителю sep: [начало, sep, конец] |
| s.rsplit(sep=' ', maxsplit=-1) | возвращает список подстрок, разделенных по sep до maxsplit раз (с конца) |
| s.rstrip([chars]) | возвращает строку без пробельных символов или chars в конце |
| s.split((sep=' ', maxsplit=-1)) | возвращает список подстрок, разделенных по sep до maxsplit раз |
| s.splitlines(keepends=False) | Разделяет строку по \n. Не удаляет разделители, если keepends=True. |
| s.startswith(prefix[, start][, end]) | возвращает True если строка начинается с prefix, иначе False |
| s.strip([chars]) | возвращает строку без пробельных символов или chars в начале и конце |
| s.swapcase() | меняет регистр всех символов на противоположный |
| s.title() | возвращает строку, где все слова начинаются с заглавной буквы, а продолжаются строчными |
| s.translate(table) | заменяет все символы строки согласно таблице перевода |
| s.upper() | возвращает копию строки в верхнем регистре |
| s.zfill(width) | Заполняет строку указанным числом нулей в начале |
Примечания
isdecimal, isdigit, isnumeric
Эти три метода отличаются тем, как обрабатывают некоторые символы Юникода.
c1 = '\u00B2' # ²
c1.isdecimal()
# False
c1.isdigit()
# True
c2 = '\u00BD' # ½
c2.isdecimal()
# False
c2.isdigit()
# False
c2.isnumeric()
# True
При работе с цифрами (арабскими и римскими), буквами, знаками математических операций или пунктуации, а также всем прочим, что можно ввести с обычной клавиатуры, не зажав Alt, они ведут себя абсолютно одинаково.
Возможно будет интересно
2022-11-09
2022-11-19