Читаем Язык программирования Python полностью

К операциям над строками, которые имеют специальную синтаксическую поддержку в языке, относятся, в частности конкатенация (склеивание) строк, повторение строки, форматирование:

Листинг

>>> print «A» + «B», «A»*5, "%s» % «A»

AB AAAAA A

В операции форматирования левый операнд является строкой формата, а правый может быть либо кортежем, либо словарем, либо некоторым значением другого типа:

Листинг

>>> print "%i» % 234

234

>>> print "%i %s %3.2f» % (5, «ABC», 23.45678)

5 ABC 23.46

>>> a = 123

>>> b = [1, 2, 3]

>>> print "%(a)i: %(b)s» % vars

123: [1, 2, 3]

Операция форматирования

В строке формата кроме текста могут употребляться спецификации, регламентирующие формат выводимого значения. Спецификация имеет синтаксис

Листинг

"%" [ключ][флаг*][шир][.точность][длина_типа]спецификатор

ключ: «(" символ за исключением круглых скобок* ")»

флаг: «+» | «-» | пробел | "#" | «0»

шир: («1» … «9»)(«0» … «9»)* | "*"

точность: («1» … «9»)* | "*"

длина_типа: «a» … «z» | «A» … «Z»

спецификатор: «a» … «z» | «A» … «Z» | "%"

Где символы обозначают следующее:

Листинг

ключ

Ключ из словаря.

Листинг

флаги

Дополнительные свойства преобразования.

Листинг

шир

Минимальная ширина поля.

Листинг

точность

Точность (для чисел с плавающей запятой).

Листинг

длина_типа

Модификатор типа.

Листинг

спецификатор

Тип представления выводимого объекта.

В следующей таблице приведены некоторые наиболее употребительные значения для спецификации форматирования.

Символ Где применяется Что указывает

0 флаг Заполнение нулями слева

— флаг Выравнивание по левому краю

+ флаг Обязательный вывод знака числа

пробел флаг Использовать пробел на месте знака числа

d, i спецификатор Знаковое целое

u спецификатор Беззнаковое целое

o спецификатор Восьмеричное беззнаковое целое

x, X спецификатор Шестнадцатеричное беззнаковое целое (со строчными или прописными латинскими буквами)

e, E спецификатор Число с плавающей запятой в формате с экспонентой

f, F спецификатор Число с плавающей запятой

g, G спецификатор Число с плавающей точкой в более коротком написании (автоматически выбирается e или f)

с спецификатор Одиночный символ (целое число или односимвольная строка)

r спецификатор Любой объект, приведенный к строке функцией repr

s спецификатор Любой объект, приведенный к строке функцией str

% спецификатор Знак процента. Для задания одиночного процента необходимо записать %%

Индексы и срезы

Следует напомнить, что строки являются неизменчивыми последовательностями, поэтому к ним можно применять операции взятия элемента по индексу и срезы:

Листинг

>>> s = «транспорт»

>>> print s[0], s[-1]

т т

>>> print s[-4:]

порт

>>> print s[:5]

транс

>>> print s[4:8]

спор

Примечание:

При выделении среза нумеруются не символы строки, а промежутки между ними.


Модуль string

До того как у строк появились методы, для операций над строками применялся модуль string. Приведенный пример демонстрирует, как вместо функции из string использовать метод (кстати, последнее более эффективно):

Листинг

>>> import string

>>> s = «one,two,three»

>>> print string.split(s, ",")

['one', 'two', 'three']

>>> print s.split(",")

['one', 'two', 'three']

В версии Python 3.0 функции, которые доступны через методы, более не будут дублироваться в модуле string.

В Python 2.4 появилась альтернатива использованию операции форматирования: класс Template. Пример:

Листинг

>>> import string

>>> tpl = string.Template("$a + $b = ${c}»)

>>> a = 2

>>> b = 3

>>> c = a + b

>>> print tpl.substitute(vars)

2 + 3 = 5

>>> del c # удаляется имя c

>>> print tpl.safe_substitute(vars)

2 + 3 = $c

>>> print tpl.substitute(vars, c=a+b)

2 + 3 = 5

>>> print tpl.substitute(vars)

Traceback (most recent call last):

File "/home/rnd/tmp/Python–2.4b2/Lib/string.py», line 172, in substitute

return self.pattern.sub(convert, self.template)

File "/home/rnd/tmp/Python–2.4b2/Lib/string.py», line 162, in convert

val = mapping[named]

KeyError: 'c'

Объект–шаблон имеет два основных метода: substitute и safe_substitute. Значения для подстановки в шаблон берутся из словаря (vars содержит словарь со значениями переменных) или из именованных фактических параметров. Если есть неоднозначность в задании ключа, можно использовать фигурные скобки при написании ключа в шаблоне.

Методы строк

В таблице ниже приведены некоторые наиболее употребительные методы объектов–строк и unicode–объектов.

Метод Описание

center(w) Центрирует строку в поле длины w

count(sub) Число вхождений строки sub в строке

encode([enc[, errors]]) Возвращает строку в кодировке enc. Параметр errors может принимать значения «strict» (по умолчанию), «ignore», «replace» или «xmlcharrefreplace»

endswith(suffix) Оканчивается ли строка на suffix

expandtabs([tabsize]) Заменяет символы табуляции на пробелы. По умолчанию tabsize=8

find(sub [,start [,end]]) Возвращает наименьший индекс, с которого начинается вхождение подстроки sub в строку. Параметры start и end ограничивают поиск окном start:end, но возвращаемый индекс соответствует исходной строке. Если подстрока не найдена, возвращается–1

index(sub[, start[, end]]) Аналогично find, но возбуждает исключение ValueError в случае неудачи

Перейти на страницу:

Похожие книги

Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Нил Форд , Билл де Ора , Майкл Хайгард

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование мобильных устройств на платформе .NET Compact Framework
Программирование мобильных устройств на платформе .NET Compact Framework

Книга известного профессионала в области компьютерных технологий посвящена разработке приложений для широкого спектра мобильных устройств с использованием популярной и постоянно развивающейся платформы .NET Compact Framework. Уникальность этой книги состоит в том, что в ней гармонично переплетены теоретические сведения обо всем цикле разработки программного обеспечения с практическими примерами применения на языках С# и Visual Basic. Подробно рассматриваются концепции, лежащие в основе самой платформы .NET Compact Framework, а также вопросы, связанные с созданием эффективного пользовательского интерфейса, управлением памятью, производительностью и надежностью. Немалое внимание уделяется практическим аспектам разработки приложений для мобильных устройств, среди которых выбор модели представления и доступа к данным, внедрение коммуникационной модели, реализация модели поведения с помощью конечных автоматов и использование XML.Книга рассчитана на разработчиков разной квалификации, а также может быть полезна для студентов и преподавателей соответствующих специальностей.

Иво Салмре

Программирование / Книги по IT