string — Общие операции со строками

В ранних версиях Python в модуле string хранились методы вроде .upper() или .replace(). Сегодня они встроены прямо в базовый тип str.

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

import string

Константы

Идеально подходят для валидации ввода или генерации паролей.

import string
import secrets

print(string.ascii_lowercase) # 'abcdefghijklmnopqrstuvwxyz'
print(string.digits)          # '0123456789'
print(string.punctuation)     # Знак пунктуации '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

# Генерация безопасного пароля
alphabet = string.ascii_letters + string.digits + string.punctuation
pwd = ''.join(secrets.choice(alphabet) for _ in range(16))
print(pwd)

Шаблоны (Template Strings)

Шаблоны (Template) предоставляют упрощенный синтаксис форматирования через знак доллара $. Это полезно в веб-разработке и интернационализации (переводах), когда "мощный" синтаксис f-строк или метода .format() слишком сложен для файлов перевода-локализации (i18n), или если текст вводится пользователем (f-строки могут быть небезопасны для исполнения пользовательского ввода!).

from string import Template

# Символ $ обозначает подстановку
t = Template('Пользователь $user купил $item.')

# Безопасная подстановка
result = t.substitute(user='Алексей', item='Ноутбук')

print(result) # Пользователь Алексей купил Ноутбук.

Полный справочник API (API Reference)

Текстовые константы

Константа Описание значения
string.ascii_letters Слияние ascii_lowercase и ascii_uppercase (весь латинский алфавит).
string.ascii_lowercase Строчные буквы: abcdefghijklmnopqrstuvwxyz.
string.ascii_uppercase Заглавные буквы: ABCDEFGHIJKLMNOPQRSTUVWXYZ.
string.digits Цифры: 0123456789.
string.hexdigits Символы 16-ричной системы: 0123456789abcdefABCDEF.
string.octdigits Символы 8-меричной системы: 01234567.
string.punctuation Все знаки пунктуации (символы на клавиатуре).
string.printable Собирает вообще все перечисленное выше плюс пробелы и переносы строк (то, что можно визуально распечатать).
string.whitespace Все пустые символы: пробел, tab, \n, \r и др.

Классы

Класс Описание
string.Template(template) Безопасный класс для форматирования в стиле Bash-переменных ($имя_переменной).
string.Formatter Класс, который является движком метода str.format(). От него можно наследоваться, чтобы создать свой собственный синтаксис форматирования текста для программы.