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(). От него можно наследоваться, чтобы создать свой собственный синтаксис форматирования текста для программы. |