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\n cd' |
ab |
cd | |||
\ | Экранирование | 'ab\\ ncd' |
ab\ncd |
\a | Звонок | 'a\a a' |
aa |
\b | Забой | 'ab\b a' |
ac |
\f | Перевод страницы | 'a\f a' |
aa |
\r | Возврат каретки | 'ab\r cd' |
cd |
\t | Горизонтальная табуляция | 'a\t a' |
a a |
\v | Вертикальная табуляция | 'a\v a' |
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