Строковый модуль Python
Модуль Python String содержит некоторые константы, служебную функцию и классы для работы со строками.
Строковый модуль Python
Это встроенный модуль, и мы должны импортировать его, прежде чем использовать какие-либо его константы и классы.
Строковые константы модуля
Давайте посмотрим на константы, определенные в модуле string.
import string # string module constants print(string.ascii_letters) print(string.ascii_lowercase) print(string.ascii_uppercase) print(string.digits) print(string.hexdigits) print(string.whitespace) # ' \t\n\r\x0b\x0c' print(string.punctuation)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 0123456789abcdefABCDEF !"#$%&'()*+,-./:;?@[\]^_`<|>~

функция заглавных слов()
Строковый модуль Python содержит одну служебную функцию — capwords(s, sep=None). Эта функция разбивает указанную строку на слова, используя функцию str.join(). Если необязательный аргумент sep не указан или отсутствует, то начальные и конечные пробелы удаляются, а слова разделяются одним пробелом. Если он указан, то разделитель используется для разделения и соединения слов.
s = ' Welcome TO \n\n JournalDev ' print(string.capwords(s))

Классы строковых модулей Python
Строковый модуль Python содержит два класса — Formatter и Template.
Форматтер
Она ведет себя точно так же, как функция str.format(). Этот класс становится полезным, если вы хотите создать его подкласс и определить свой собственный синтаксис строки формата. Давайте рассмотрим простой пример использования класса Formatter.
from string import Formatter formatter = Formatter() print(formatter.format('', website='JournalDev')) print(formatter.format('<> ', 'Welcome to', website='JournalDev')) # format() behaves in similar manner print('<> '.format('Welcome to', website='JournalDev'))
Welcome to JournalDev Welcome to JournalDev

Шаблон
Этот класс используется для создания строкового шаблона для более простых замен строк, как описано в PEP 292. Он полезен при реализации интернационализации (i18n) в приложении, где нам не нужны сложные правила форматирования.
from string import Template t = Template('$name is the $title of $company') s = t.substitute(name='Pankaj', title='Founder', company='JournalDev.') print(s)

Вы можете проверить полный скрипт Python и другие примеры Python в нашем репозитории GitHub.
Ссылка: Официальная документация
string
В модуле определены константы, а также вспомогательные классы и функции для работы со строками.
Синонимы поиска: string
Статьи раздела
| string.ascii_letters | Константное перечисление букв из набора ASCII в верхнем и нижнем реги… |
| string.ascii_lowercase | Константное перечисление букв из набора ASCII в нижнем регистре. |
| string.ascii_uppercase | Константное перечисление букв из набора ASCII в верхнем регистре. |
| string.center | Позиционирует по центру указанную строку, дополняя её справа и слева … |
| string.find | Возвращает наименьший индекс, по которому обнаруживается начало указа… |
| string.join | Возвращает строку, собранную из элементов указанного объекта, поддерж… |
| string.ljust | Позиционирует влево указанную строку, дополняя её справа до указанной… |
| string.lstrip | Возвращает копию указанной строки, с начала (слева l — left) которой … |
| string.replace | Возвращает копию строки, в которой заменены все вхождения указанной с… |
| string.rjust | Позиционирует вправо указанную строку, дополняя её слева до указанной… |
| string.rstrip | Возвращает копию указанной строки, с конца (справа r — right) которой… |
| string.strip | Возвращает копию указанной строки, с обоих концов которой устранены у… |
| string.zfill | Дополняет указанную строку нулями слева до указанной минимальной длин… |
Константы модуля string
Конкатенация ascii_lowercase и ascii_uppercase константы описаны ниже. Это значение не зависит от локали.
string.ascii_lowercase :
Строчные буквы ‘abcdefghijklmnopqrstuvwxyz’ . Это значение не зависит от локали и не изменится.
string.ascii_uppercase :
Прописные буквы ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’ . Это значение не зависит от локали и не изменится.
string.digits :
string.hexdigits :
string.octdigits :
string.punctuation :
Строка ASCII символов , которые считаются знаки препинания в локали языка C : !»#$%&'()*+,-./:;?@[\]^_<|>~ .
string.printable :
Строка символов ASCII, которые считаются печатными. Это сочетание digits , ascii_letters , punctuation , и whitespace .
string.whitespace :
Строка, содержащая все символы ASCII, которые считаются пробелами. Сюда входят пространство символов, табуляция, перевод строки, возврат, подача формы и вертикальная табуляция.
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Строковые константы модуля string
- Метод string.capwords() модуля string
- Класс Formatter() модуля string
- Класс Template() модуля string
- Создание отчетов с использованием string.Template
Немножко о форматировании строк в питоне
Как всем известно, в питоне есть четыре способа форматирования строк:
- string.Template
- сишный стиль
- f-строки
- str.format()
Первый, string.Template , я последний раз видел в проектах на версии питона не то 2.4, не то 2.5. Очень давно.
Сишный стиль, конечно же, самый няшный. К тому же в питоне можно давать подстановкам имена и после % указывать dict вместо tuple или одиночного значения, если оно не tuple. Этот стиль используется в модуле logging — см. описание класса LogRecord : The main information passed in is in msg and args, which are combined using str(msg) % args to create the message field of the record. — вы наверняка везде видели рекомендации использовать отложенное форматирование log.debug(‘%s, %s’, ‘hello’, ‘world) вместо log.debug(‘%s, %s’ % (‘hello’, ‘world)) . Но можно и так: log.debug(‘%(greet)s, %(me)s’, dict(greet=’hello’, me=’world))
f-строки это не совсем данные, это часть кода и для их обработки задействуется компилятор. Но они сделаны по образу и подобию str.format() , который описан в PEP 3101 – Advanced String Formatting.
Грамматики str.format() и f-строк очень похожи, но для str.format() она неполная и реализация парсера слегка упрощённая — в сишном модуле _string видим простое сканирование строки и подсчёт открывающих и закрывающих скобок. Поэтому можем наблюдать вот такое интересное отличие:
class MyObject: def __format__(self, format_spec): print(format_spec) return "Here we go." print(f"> >")
NameError: name 'braces' is not defined
Потому что < braces >интерпретируется как set , состоящий из одного элемента braces , который мы не определяли. Но str.format() отрабатывает без ошибок:
print('> >'.format(my_obj=MyObject()))
Format spec with < braces >Here we go.
Потому что двойные скобки интерпретируются как экранирование одиночных. Можно считать это фичей.
Итак, format_spec допускает рекурсию, но она ограничивается двойкой:
x=1 y=2 z=3 print('x=>>'.format_map(locals()))
ValueError: Max string recursion exceeded
Такая неглубокая рекурсия служит исключительно ради гибкости задания параметров форматирования, но для людей с креативной фантазией это несомненно серьёзное ограничение.
Как видим, format_spec может содержать что угодно, но стандартное форматирование реализовано в классе Formatter модуля string . Однако ничто не мешает написать свой formatter. Зачем? — Ну, например, чтобы найти имена всех подстановок в строке:
import string import _string class SubstCollector(string.Formatter): def format(self, format_string, /, *args, **kwargs): ''' Return names of all substitutions in format_string. ''' self._substs = set() self.vformat(format_string, args, kwargs) return self._substs def get_field(self, field_name, args, kwargs): ''' Collect substitution names i.e. `arg_name` according to https://docs.python.org/3/library/string.html#formatspec. ''' first, rest = _string.formatter_field_name_split(field_name) self._substs.add(first) return '', first def convert_field(self, value, conversion): ''' Do nothing. ''' return '' def format_field(self, value, format_spec): ''' Do nothing. ''' return '' print(SubstCollector().format( 'a= and >> plus ' ))
Или сделать форматирование с поддержкой отступов. Или, что гораздо прикольнее, не ограничивать рекурсию и замутить свой мини-язык. Но это я всецело оставляю на ваше усмотрение.
- Python
- Программирование