Перейти к содержимому

Import string python что это

  • автор:

Строковый модуль 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

Немножко о форматировании строк в питоне

Как всем известно, в питоне есть четыре способа форматирования строк:

  1. string.Template
  2. сишный стиль
  3. f-строки
  4. 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
  • Программирование

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *