Главная страница

справочник по Python. мм isbn 9785932861578 9 785932 861578


Скачать 4.21 Mb.
Названиемм isbn 9785932861578 9 785932 861578
Анкорсправочник по Python
Дата08.05.2022
Размер4.21 Mb.
Формат файлаpdf
Имя файлаBizli_Python-Podrobnyy-spravochnik.440222.pdf
ТипСправочник
#518195
страница29 из 82
1   ...   25   26   27   28   29   30   31   32   ...   82
357
Символ(ы)
Описание
\W
Соответствует любому символу, не относящемуся к множе- ству \w.
\Z
Соответствует только концу строки.
\\
Соответствует самому символу обратного слэша.
Специальные символы \d, \D, \s, \S, \w и \W интерпретируются иначе при со- поставлении со строками Юникода. В данном случае они совпадают со все- ми символами Юникода, соответствующими описанным свойствам. На- пример, \d совпадает со всеми символами Юникода, которые классифици- руются как цифры, будь то европейские, арабские или индийские цифры, каждые из которых занимают различные диапазоны символов Юникода.
Функции
Ниже перечислены функции, которые используются для выполнения опе- раций сопоставления с шаблоном и замены:
compile(str [, flags])
Компилирует строку с шаблоном регулярного выражения и создает объ- ект регулярного выражения. Этот объект может передаваться в аргументе
pattern
всем функциям, описываемым ниже. Данный объект также предо- ставляет ряд методов, которые описываются чуть ниже. В аргументе flags передается битная маска следующих флагов, объединенных битовой опе- рацией ИЛИ:
Флаг
Описание
A
или ASCII
Сопоставление выполняется только с 8-битными символа- ми ASCII (только в Python 3).
I
или IGNORECASE
Сопоставление выполняется без учета регистра символов.
L
или LOCALE
При сопоставлении со специальными символами \w, \W, \b и \B используются региональные настройки.
M
или MULTILINE
Обеспечивает совпадение символов ^ и $ с началом и кон- цом каждой строки в тексте, помимо начала и конца самого текста. (Обычно символы ^ и $ совпадают только с началом и концом всего текста.)
S
или DOTALL
Обеспечивает совпадение символа точки (.) со всеми сим- волами, включая символ перевода строки.
U
или UNICODE
При сопоставлении с символами \w, \W, \b и \B используется информация из базы данных о свойствах символов. (Толь- ко в Python 2. В Python 3 Юникод используется по умолча-
Python 2. В Python 3 Юникод используется по умолча-
. В Python 3 Юникод используется по умолча-
Python 3 Юникод используется по умолча-
3 Юникод используется по умолча- нию.)
X
или VERBOSE
Игнорирует неэкранированные пробельные символы и комментарии в строке шаблона.

358
Глава 16. Работа с текстом и строками
escape(string)
Возвращает строку, в которой все не алфавитно-цифровые символы экра- нированы символом обратного слэша.
findall(pattern, string [,flags])
Возвращает список всех неперекрывающихся совпадений с шаблоном
pattern
в строке string, включая пустые совпадения. Если шаблон имеет группы, возвращает список фрагментов текста, совпавших с группами.
Если в шаблоне присутствует более одной группы, каждый элемент в спи- ске будет представлен кортежем, содержащим текст из каждой группы.
Аргумент flags имеет то же назначение, что и в функции compile().
finditer(pattern, string, [, flags])
То же, что и функция findall(), но вместо списка возвращает итератор.
Данный итератор воспроизводит элементы типа MatchObject.
match(pattern, string [, flags])
Проверяет наличие совпадения с шаблоном pattern в начале строки string.
В случае успеха возвращает объект типа MatchObject, в противном случае возвращается None. Аргумент flags имеет то же назначение, что и в функ- ции compile().
search(pattern, string [, flags])
Отыскивает в строке string первое совпадение с шаблоном pattern. Аргу-
Аргу- мент flags имеет то же назначение, что и в функции compile(). В случае успеха возвращает объект типа MatchObject; если совпадений не найдено, возвращается None.
split(pattern, string [, maxsplit = 0])
Разбивает строку string по совпадениям с шаблоном pattern. Возвращает список строк, включая текст, совпавший с группами, присутствующими в шаблоне. В аргументе maxsplit передается максимальное количество вы- полняемых разбиений. По умолчанию выполняются все возможные раз- биения.
sub(pattern, repl, string [, count = 0])
Замещает текстом repl самые первые неперекрывающиеся совпадения с шаблоном pattern в строке string. Аргумент repl может быть строкой или функцией. Если в этом аргументе передается функция, при вызове ей бу- дет передаваться объект типа MatchObject, и она должна возвращать стро- ку замены. Если в аргументе repl передается строка, в ней допускается использовать обратные ссылки на группы в шаблоне, такие как ‘\6’. Для ссылки на именованные группы можно использовать последовательность
‘\g<
name>’
. Аргумент count определяет максимальное количество подстано- вок. По умолчанию замещаются все найденные совпадения. Эти функции не принимают аргумент flags, как функция compile(), тем не менее анало- гичного эффекта можно добиться, воспользовавшись нотацией (?iLmsux), описанной выше в этом разделе.

Модуль re
359
subn(pattern, repl, string [, count = 0])
Т
о же, что и sub(), но возвращает кортеж, содержащий новую строку и ко- личество выполненных подстановок.
Объекты регулярных выражений
Объект скомпилированного регулярного выражения r, который создается функцией compile(), обладает следующими атрибутами и методами:
r.flags
Значение аргумента flags, с которым был скомпилирован объект регуляр- ного выражения, или 0, если ни один из флагов не был указан.
r.groupindex
Словарь, отображающий символические имена групп, определяемых как r’(?P)’
, в порядковые номера групп.
r.pattern
Строка шаблона, из которой был скомпилирован объект регулярного вы- ражения.
r.findall(string [, pos [, endpos]])
Этот метод идентичен функции findall(). В аргументах pos и endpos пере- даются начальная и конечная позиция поиска.
r.finditer(string [, pos [, endpos]])
Этот метод идентичен функции finditer(). В аргументах pos и endpos пере- даются начальная и конечная позиции поиска.
r.match(string [, pos] [, endpos])
Проверяет наличие совпадения с шаблоном pattern в строке string. В ар- гументах pos и endpos передаются начальная и конечная позиции поиска.
В случае успеха возвращает объект типа MatchObject, в противном случае возвращается None.
r.search(string [, pos] [, endpos])
Отыскивает в строке string первое совпадение с шаблоном pattern. В аргу- ментах pos и endpos передаются начальная и конечная позиции поиска.
В случае успеха возвращает объект типа MatchObject; если совпадений не найдено, возвращается None.
r.split(string [, maxsplit = 0])
Этот метод идентичен функции split().
r.sub(repl, string [, count = 0])
Этот метод идентичен функции sub().
r.subn(repl, string [, count = 0])
Этот метод идентичен функции subn().

360
Глава 16. Работа с текстом и строками
Объекты MatchObject
Э
кземпляры класса MatchObject возвращаются функциями search() и match() и содержат информацию о группах, а также о позициях найденных совпа- дений. Экземпляр m класса MatchObject обладает следующими методами и атрибутами:
m.expand(template)
Возвращает строку, полученную заменой совпавших фрагментов экрани- рованными последовательностями в строке template. Обратные ссылки, та- кие как “\1” и “\2”, и именованные ссылки, такие как “\g” и “\g”, замещаются содержимым соответствующих групп. Обратите внимание, что эти последовательности должны быть оформлены как «сырые» стро- ки или с дополнительным символом обратного слэша, например: r’\1’ или
‘\\1’
m.group([group1, group2, ...])
Возвращает одну или более подгрупп в совпадении. Аргументы определя- ют номера групп или их имена. Если имя группы не задано, возвращает- ся совпадение целиком. Если указана только одна группа, возвращается строка, содержащая текст, совпавший с группой. В противном случае воз- вращается кортеж, содержащий совпадения со всеми указанными группа- ми. Если было запрошено содержимое группы с недопустимым именем или номером, возбуждает исключение IndexError.
m.groups([default])
Возвращает кортеж, содержащий совпадения со всеми группами в шабло- не. В аргументе default указывается значение, возвращаемое для групп, не участвовавших в совпадении (по умолчанию имеет значение None).
m.groupdict([default])
Возвращает словарь, содержащий совпадения с именованными группами.
В аргументе default указывается значение, возвращаемое для групп, не участвовавших в сопоставлении (по умолчанию имеет значение None).
m.start([group])
m
.end([group])
Эти два метода возвращают индексы начала и конца совпадения с группой в строке. Если аргумент group опущен, возвращаются позиции всего совпа- дения. Если группа существует, но не участвовала в сопоставлении, воз- вращается None.
m.span([group])
Возвращает кортеж из двух элементов (m.start(group), m.end(group)). Если совпадений с группой group не было обнаружено, возвращается кортеж
(None, None)
. Если аргумент group опущен, возвращаются позиции начала и конца всего совпадения.
m.pos
Значение аргумента pos, переданное методу search() или match().

Модуль re
361
m.endpos
Значение аргумента endpos, переданное методу search() или match().
m.lastindex
Числовой индекс последней совпавшей группы. Если ни одна группа не со- впала или в шаблоне нет ни одной группы, возвращается None или в шабло- не нет ни одной группы.
m.lastgroup
Имя последней совпавшей группы. Если ни одна группа не совпала или в шаблоне нет ни одной группы, возвращается None.
m.re
Объект регулярного выражения, чьим методом match() или search() был создан данный экземпляр класса MatchObject.
m.string
Строка, переданная методу match() или search().
Пример
Следующий пример демонстрирует способы использования модуля re для поиска, извлечения и замены фрагментов текста в строке.
import re text = “Guido will be out of the office from 12/15/2012 - 1/3/2013.”
ёё
# Шаблон регулярного выражения для поиска дат datepat = re.compile(‘(\d+)/(\d+)/(\d+)’)
ёё
# Найти и вывести все даты for m in datepat.finditer(text):
print(m.group())
ёё
# Отыскать все даты и вывести их в другом формате monthnames = [None,’Jan’,’Feb’,’Mar’,’Apr’,’May’,’Jun’,
‘Jul’,’Aug’,’Sep’,’Oct’,’Nov’,’Dec’]
for m in datepat.finditer(text):
print (“%s %s, %s” % (monthnames[int(m.group(1)], m.group(2), m.group(3)))
ёё
# Заменить все даты их значениями в европейском формате (день/месяц/год)
def fix_date(m):
return “%s/%s/%s” % (m.group(2),m.group(1),m.group(3))
newtext = datepat.sub(fix_date, text)
ёё
# Альтернативный способ замены newtext = datepat.sub(r’\2/\1/\3’, text)
Примечания
• Подробное описание теории и реализации поддержки регулярных вы- ражений можно найти в учебниках по устройству компиляторов. Кроме

362
Глава 16. Работа с текстом и строками того, полезно будет ознакомиться с книгой «Mastering Regular Expres-
Mastering Regular Expres-
Regular Expres-
Regular Expres-
Expres-
Expres- sions» Джеффри Фридла (Jeffrey Friedl) (O’Reilly & Associates, 1997).
1
• Основные сложности, возникающие при работе с модулем re, – это соз- дание регулярных выражений. В их разработке вам может пригодиться такой инструмент, как Kodos (http://kodos.sourceforget.net).
Модуль string
Модуль string содержит множество констант и функций, которые могут пригодиться для обработки строк. В нем также объявляются классы, пред- назначенные для реализации новых механизмов форматирования строк.
Константы
Следующие константы определяют различные множества символов, кото- рые могут пригодиться в различных операциях над строками.
Константа
Описание
ascii_letters
Строка, содержащая все строчные и заглавные символы ASCII
ascii_lowercase
Строка ‘abcdefghijklmnopqrstuvwxyz’
ascii_uppercase
Строка ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’
digits
Строка ‘0123456789’
hexdigits
Строка ‘0123456789abcdefABCDEF’
letters
Конкатенация строк lowercase и uppercase lowercase
Строка, содержащая все строчные символы, соответствующие текущим региональным настройкам системы octdigits
Строка ‘01234567’
punctuation
Строка с символами пунктуации из набора ASCII
printable
Строка печатаемых символов – комбинация значений letters, digits
, punctuation и whitespace uppercase
Строка, содержащая все заглавные символы, соответствую- щие текущим региональным настройкам системы whitespace
Строка, содержащая все пробельные символы. В их число обычно входят: пробел, табуляция, перевод строки, возврат каретки, перевод формата и вертикальная табуляция
Примечательно, что содержимое некоторых из этих констант (например, letters и uppercase) зависит от региональных настроек системы.
1
Фридл Д. «Регулярные выражения. 3-е издание». – Пер. с англ. – СПб.: Символ-
Плюс, 2008. – Прим. перев.

Модуль string
363
Объекты типа Formatter
Строковый метод str.format() позволяет реализовать дополнительное фор- матирование строк. Как было показано в главе 3 «Типы данных и объек- ты» и в главе 4 «Операторы и выражения», этот метод способен обращать- ся к элементам последовательностей или словарей, к атрибутам объектов и выполнять другие подобные операции. В модуле string определен класс
Formatter
, который может использоваться для реализации нестандартных операций форматирования. Этот класс содержит атрибуты и методы, реа- лизующие операции форматирования строк, и позволяет изменять их.
Formatter()
Создает новый экземпляр класса Formatter. Экземпляр f класса Formatter поддерживает следующие операции.
f.format(format_string, *args, **kwargs)
Форматирует строку format_string. По умолчанию выводит ту же стро-
По умолчанию выводит ту же стро- ку, что и метод format_string.format(*args, **kwargs). Например, вызов f.format(“{name} is {0:d} years old”, 39,name=”Dave”)
вернет строку “Dave is 39 years old”
f.vformat(format_string, args, kwargs)
Метод, который фактически выполняет работу метода f.format(). В ар- гументе args передается кортеж позиционных аргументов, а в аргументе
kwargs
– словарь именованных аргументов. Если аргументы уже сохранены в кортеже и в словаре, можно использовать этот метод, так как он обладает более высокой скоростью работы.
f.parse(format_string)
Создает итератор для парсинга содержимого строки формата format_string.
Итератор просматривает строку формата и воспроизводит кортежи вида
(
literal_text, field_name, format_spec, conversion)
. Поле literal_text содер- жит произвольный текст, предшествующий спецификатору формата, за- ключенному в фигурные скобки { ... }. Может содержать пустую строку, если перед спецификатором отсутствует какой-либо текст. Поле field_name содержит строку с именем поля в спецификаторе формата. Например, для спецификатора ‘{0:d}’ именем поля будет ‘0’. Поле format_spec содержит спецификатор формата, следующий за двоеточием, например в предыду- щем примере это поле будет содержать ‘d’. Может быть пустой строкой, если спецификатор не указан. Поле conversion содержит спецификатор пре- содержит спецификатор пре- спецификатор пре- спецификатор пре- пре- пре- образования (если присутствует). В предыдущем примере это поле будет содержать None, но, если бы использовался спецификатор ‘{0!s:d}’, поле con-
version
содержало бы ‘s’. Для последнего фрагмента строки формата все три поля field_name, format_spec и conversion будут содержать None.
f.get_field(fieldname, args, kwargs)
Извлекает из аргументов args и kwargs значение, ассоциированное с указан- ным именем поля fieldname. В аргументе fieldname передается строка, такая как “0” или “name”, которая возвращается методом parse(), представленным

364
Глава 16. Работа с текстом и строками выше, в поле field_name. Возвращает кортеж (value, key), где value – значе- ние поля fieldname, а key – ключ, использовавшийся для поиска значения в аргументах args или kwargs. Если key – целое число, оно интерпретируется как индекс в кортеже args. Если строка, она интерпретируется как ключ словаря kwargs. Аргумент fieldname может включать дополнительные опе- рации доступа к элементам последовательностей или к атрибутам, такие как ‘0.name’ или ‘0[name]’. В этом случае метод выполнит обращение к тре- буемому элементу и вернет соответствующее значение. Однако значение key в возвращаемом кортеже при этом будет иметь значение ‘0’.
f.get_value(key, args, kwargs)
Извлекает объект из аргумента args или kwargs, в зависимости от типа зна- чения key. Если key – целое число, объект извлекается из аргумента args.
Если строка – из аргумента kwargs.
f.check_unused_args(used_args, args, kwargs)
Проверяет аргументы, не использованные в вызове format(). В аргументе
used_args
передается множество всех использованных ключей (смотрите описание get_field()), которые были найдены в строке форматирования.
В аргументах args и kwargs передаются позиционные и именованные аргу- менты, полученные функцией format(). По умолчанию возбуждает исклю- чение TypeError, если будут обнаружены неиспользованные аргументы.
f.format_value(value, format_spec)
Форматирует единственное значение value в соответствии с указанным спецификатором формата format_spec. По умолчанию просто вызывает встроенную функцию format(value, format_spec).
f.convert_field(value, conversion)
Преобразует значение value, полученное в результате вызова метода get_
field()
, в соответствии с указанным кодом преобразования conversion. Если в аргументе conversion передается None, возвращает оригинальное значение
value
. Если указан код преобразования ‘s’ или ‘r’, значение value преобра- зуется в строку вызовом функции str() или repr() соответственно.
Если потребуется реализовать нестандартное форматирование строк, мож- но создать объект класса Formatter и просто использовать методы по умол- чанию для реализации собственного типа форматирования. Можно также определить новый класс, производный от класса Formatter, и переопреде- лить методы, описанные выше.
Дополнительные подробности о синтаксисе спецификаторов формата и о фор- матировании строк приводятся в главах 3 и 4.
Строки типа Template
В модуле string объявляется новый строковый тип Template, который упро- щает некоторые операции подстановки. Пример использования этих строк приводится в главе 9.

Модуль string
365
Н
иже показано, как создать новый объект строки шаблона:
Template(s)
Здесь s – это строка, а Template – имя класса.
Объект t класса Template поддерживает следующие методы:
t.substitute(m [, **kwargs])
Этот метод принимает объект отображения m (например, словарь) или спи- сок именованных аргументов и выполняет подстановку значений имено- ванных аргументов в строку t. В процессе подстановки пары символов ‘$$’ замещаются единственным символом ‘$’, а фрагменты ‘$key’ или ‘${key}’ – значениями m[‘key’] или kwargs[‘key’], если методу были переданы имено- ванные аргументы. Ключи key в строке должны быть допустимыми иден- тификаторами Python. Если в окончательной строке остались неопознан-
Python. Если в окончательной строке остались неопознан-
. Если в окончательной строке остались неопознан- ные ключи ‘$key’, возбуждается исключение KeyError.
t.safe_substitute(m [, **kwargs])
То же, что и substitute(), за исключением того, что этот метод не возбужда- ет исключение и не сообщает об ошибках. Неопознанные ключи $key оста- ются в строке в первоначальном виде.
t.template
Содержит оригинальную строку, переданную при вызове Template().
Изменить поведение класса Template можно, создав производный класс и переопределив атрибуты delimiter и idpattern. Например, ниже приводит- ся фрагмент, в котором символ экранирования $ заменен на @, а в именах ключей позволяет использовать только алфавитные символы:
class MyTemplate(string.Template):
delimiter = ‘@’ # Экранирующий символ idpattern = ‘[A-Z]*’ # Шаблон идентификаторов
Вспомогательные функции
В модуле string имеется также пара функций для выполнения операций над строками, которые не являются строковыми методами.
capwords(s)
Переводит в верхний регистр первые буквы каждого слова в строке s, заме- щает повторяющиеся пробельные символы единственным пробелом и уда- ляет начальные и конечные пробелы.
maketrans(from, to)
Создает таблицу преобразования, которая отображает каждый символ в строке from в символ, находящийся в той же позиции, в строке to. Строки
from
и to должны иметь одинаковую длину. Эта функция используется для создания аргументов, пригодных для использования строковым методом translate()

366
Глава 16. Работа с текстом и строками
Модуль struct
М
одуль struct используется для преобразования данных на языке Python в структуры двоичных данных (представленные как строки байтов) и на- оборот. Такие структуры данных часто используются для организации взаимодействий с функциями, написанными на языке C, при работе с дво-
C, при работе с дво-
, при работе с дво- ичными файлами, сетевыми протоколами или для обмена двоичными дан- ными через последовательные порты.
Функции упаковывания и распаковывания
Ниже перечислены функции уровня модуля, используемые для упаковы- вания и распаковывания данных в строках байтов. Если в программе не- обходимо многократно выполнять эти операции, для этих целей можно ис- пользовать объект класса Struct, описываемый в следующем разделе.
pack(fmt, v1, v2, ...)
Упаковывает значения v1, v2 и так далее, в строку байтов, в соответствии со строкой формата fmt.
pack_into(fmt, buffer, offset, v1, v2 ...)
Упаковывает значения v1, v2 и так далее, в объект буфера, доступный для записи, начиная с позиции offset. Этот метод может действовать только с объектами, поддерживающими интерфейс буферов. В качестве примеров таких объектов можно назвать array.array и bytearray.
unpack(fmt, string)
Распаковывает содержимое строки байтов string в соответствии со строкой формата fmt. Возвращает кортеж распакованных значений. Длина строки
string
должна точно соответствовать размеру формата, который определя- ется функцией calcsize().
unpack_from(fmt, buffer, offset)
Распаковывает содержимое объекта buffer в соответствии со строкой фор- мата fmt, начиная с позиции offset. Возвращает кортеж распакованных значений.
calcsize(fmt)
Вычисляет размер в байтах структуры, соответствующей строке формата
fmt
Объекты типа Struct
Модуль struct объявляет класс Struct, который предоставляет альтерна- тивный интерфейс для операций упаковывания и распаковывания. Этот класс обеспечивает более высокую эффективность, так как строка формата интерпретируется всего один раз.
Struct(fmt)
Создает экземпляр класса Struct, представляющий данные, упакованные в соответствии с указанным кодом формата. Экземпляр s класса Struct об-

Модуль struct
367
ладает следующими методами и действует так же, как и функции, описан- ные в предыдущем разделе:
Метод
Описание
s.pack(v1, v2, ...)
Упаковывает значения в строку байтов
s.pack_into(buffer, offset, v1, v2, ...)
Упаковывает значения в объект буфера
s.unpack(bytes)
Распаковывает значения из строки байтов
s.unpack_from(buffer, offset)
Распаковывает значения из объекта буфера
s.format
Используемый формат
s.size
Размер формата в байтах
Коды форматов
Строки форматов, используемые в модуле struct, являются последователь- ностями символов, которые имеют следующие значения:
Формат
Тип в языке C
Тип в языке Python
‘x’
пустой байт
Не имеет значения
‘c’
char
Строка длиной 1
‘b’
signed char
Целое
‘B’
unsigned char
Целое
‘?’
_Bool
(C99)
Логическое значение
‘h’
short
Целое
‘H’
unsigned short
Целое
‘i’
int
Целое
‘I’
unsigned int
Целое
‘l’
long
Целое
‘L’
unsigned long
Целое
‘q’
long long
Длинное целое
‘Q’
unsigned long long
Длинное целое
‘f’
float
С плавающей точкой
‘d’
double
С плавающей точкой
‘s’
char[]
Строка
‘p’
char[]
Строка с длиной в первом байте
‘P’
void *
Целое
Каждому символу формата может предшествовать целое число, определя- ющее количество повторений (например, ‘4i’ – это то же, что и ‘iiii’). Для

368
Глава 16. Работа с текстом и строками формата ‘s’ число обозначает максимальную длину строки, то есть формат
‘10s’
обозначает строку длиной до 10 байтов. Формат ‘0s’ обозначает строку нулевой длины. Формат ‘p’ используется для представления строк, длина которых определяется значением в первом байте, за которым следует сама строка. Этот формат может пригодиться для организации взаимодействий с программным кодом, написанным на языке Pascal, что иногда бывает не-
Pascal, что иногда бывает не-
, что иногда бывает не- обходимо в системе Macintosh. Обратите внимание, что длина таких строк не может превышать 255 символов.
Когда для распаковывания двоичных данных используется формат ‘I’ или
‘L’
, возвращается длинное целое число. Кроме того, формат ‘P’ может воз- вращать целое или длинное целое число, в зависимости от размера машин- ного слова.
Первый символ в строке формата может также определять порядок следо- вания байтов и выравнивание в упакованных данных, как показано ниже:
Формат
Порядок следования байтов
Размер и выравнивание
‘@’
Определяется аппаратной архитек- турой
Определяется аппаратной архи- тектурой
‘=’
Определяется аппаратной архитек- турой
Стандартные
‘<’
Обратный порядок
Стандартные
‘>’
Прямой порядок
Стандартные
‘!’
Сетевой порядок (прямой)
Стандартные
Порядок следования байтов, определяемый аппаратной архитектурой, может быть прямым или обратным. Размеры и выравнивание, определяе- быть прямым или обратным. Размеры и выравнивание, определяе- быть прямым или обратным. Размеры и выравнивание, определяе- прямым или обратным. Размеры и выравнивание, определяе- прямым или обратным. Размеры и выравнивание, определяе- или обратным. Размеры и выравнивание, определяе- или обратным. Размеры и выравнивание, определяе- обратным. Размеры и выравнивание, определяе- обратным. Размеры и выравнивание, определяе-
. Размеры и выравнивание, определяе-
Размеры и выравнивание, определяе- мые аппаратной архитектурой, соответствуют значениям, используемым компилятором языка C, и зависят от реализации. Под стандартным вырав-
C, и зависят от реализации. Под стандартным вырав-
, и зависят от реализации. Под стандартным вырав- ниванием подразумевается отсутствие необходимости выравнивания для любого типа. Под стандартным размером подразумевается, что значение типа short имеет размер 2 байта, значение типа int – 4 байта, значение типа long
– 4 байта, значение типа float – 32 бита и значение типа double – 64 бита. Для формата ‘P’ может использоваться только порядок следования байтов, определяемый аппаратной архитектурой.
Примечания
Иногда бывает необходимо выравнивать конец структуры в соответствии с требованиями, предъявляемыми определенным типом. Для этого в конец строки формата следует добавить код формата требуемого типа с числом по- вторений, равным нулю. Например, формат ‘llh0l’ указывает, что струк- тура должна заканчиваться на границе 4-байтового слова (предполагает- ся, что значения типа long выравниваются по границам 4-байтовых слов).
В данном случае после значения типа short, определяемого кодом ‘h’, будут добавлены два пустых байта. Этот прием действует, только когда указы- вается, что размер и выравнивание определяются аппаратной архитекту-

Модуль unicodedata
369
рой, – при стандартном подходе правила определения размера и выравни- вания не действуют.
Форматы ‘q’ и ‘Q’ могут использоваться только в режиме «определяется ап- паратной архитектурой», если компилятор языка C, использованный для сборки интерпретатора Python, поддерживает тип long long.
См. также
Описание модуля array (стр. 328) и модуля ctypes (стр. 759).
Модуль unicodedata
Модуль unicodedata обеспечивает доступ к базе данных символов Юникода, которая содержит информацию о свойствах всех символов Юникода.
bidirectional(unichr)
Возвращает признак направления письма для символа unichr в виде стро- ки или пустую строку, если такое значение не определено. Возвращаемая строка может иметь одно из следующих значений:
Значение
Описание
L
Направление письма слева направо
LRE
Служебный символ, определяющий направление письма cлева направо внутри текста, который записывается справа налево
LRO
Служебный символ, определяющий направление письма cлева направо, независимо от направления письма в тексте
R
Направление письма cправа налево
AL
Арабский символ, направление письма cправа налево
RLE
Служебный символ, определяющий направление письма справа налево внутри текста, который записывается слева направо
RLO
Служебный символ, определяющий направление письма справа налево, независимо от направления письма в тексте
PDF
Служебный символ, отменяет предыдущее направление письма
EN
Европейское число
ES
Разделитель европейских чисел
ET
Конец европейского числа
AN
Арабское число
CS
Универсальный разделитель чисел
NSM
Знак, не занимающий дополнительного пространства
BN
Нейтральная граница
B
Разделитель абзацев

370
Глава 16. Работа с текстом и строками
Значение
Описание
S
Разделитель сегментов
WS
Пробельный символ
ON
Прочие нейтральные символы
category(unichr)
Возвращает строку, описывающую основную категорию, к которой отно- сится символ unichr. Возвращаемая строка может иметь одно из следую- щих значений:
Значение
Описание
Lu
Буква, заглавная
Ll
Буква, строчная
Lt
Буква, с которой начинается слово, когда только первая буква слова записывается как заглавная
Mn
Знак, не занимающий дополнительного пространства
Mc
Знак, занимающий дополнительное пространство
Me
Объемлющий знак
Nd
Число, десятичная цифра
Nl
Число, буква
No
Число, прочие символы
Zs
Разделитель, пробельный символ
Zl
Разделитель строк
Zp
Разделитель абзацев
Cc
Управляющий символ
Cf
Неотображаемый символ, признак форматирования
Cs
Прочие, суррогатная пара
Co
Прочие, предназначен для закрытого использования
Cn
Прочие, символ не присвоен
Lm
Буква, модификатор
Lo
Буква, прочие
Pc
Знак пунктуации, соединяющий слова
Pd
Знак пунктуации, дефис
Ps
Знак пунктуации, открывающая скобка
Pe
Знак пунктуации, закрывающая скобка
Pi
Знак пунктуации, открывающие кавычки
(продолжение)

Модуль unicodedata
371
Значение
Описание
Pf
Знак пунктуации, закрывающие кавычки
Po
Знак пунктуации, прочие
Sm
Символ, математический
Sc
Символ, знак денежной единицы
Sk
Символ, модификатор
So
Символ, прочие
combining(unichr)
Возвращает целое число, описывающее класс объединения для символа
unichr
или 0, если класс объединения не определен. Возвращается одно из следующих значений:
Значение
Описание
0
Пробел, разделитель, признак переупорядочения, дополнитель- ный знак тибетского алфавита
1
Комбинационный знак; описывает или вписывается внутрь основного символа
7
Знак нюкта (Nukta, индийский алфавит)
8
Знак транскрипции для алфавита Хирагана/Катакана
9
Вирама
10-199
Классы фиксированных позиций
200
Присоединяется снизу слева
202
Присоединяется снизу
204
Присоединяется снизу справа
208
Присоединяется слева
210
Присоединяется справа
212
Присоединяется сверху слева
214
Присоединяется сверху
216
Присоединяется сверху справа
218
Снизу слева
220
Снизу
222
Снизу справа
224
Слева
226
Справа
228
Сверху слева
230
Сверху

372
Глава 16. Работа с текстом и строками
Значение
Описание
232
Сверху справа
233
Двойной снизу
234
Двойной сверху
240
Снизу (подстрочный знак)
decimal(unichr [, default])
Возвращает десятичное целое значение цифрового символа unichr. Если
unichr
не является десятичной цифрой, возвращается значение аргумента
default
или возбуждается исключение ValueError, если этот аргумент опущен.
decomposition(unichr)
Возвращает строку, содержащую разложение символа unichr или пустую строку, если разложение не определено. Обычно символы, содержащие знаки акцента, могут быть разложены в многосимвольные последователь- ности. Например, вызов decomposition(u”\u00fc”) (символ “ь”) вернет строку
“0075 0308”
, соответствующую букве u и знаку акцента (Ё). Строка, возвра- щаемая этой функцией, может также включать следующие строки:
Значение
Описание
Вариант шрифта (например, готический)

Неразрывный пробел или дефис

Форма начального представления (Арабский алфавит)

Форма промежуточного представления (Арабский алфавит)

Форма окончательного представления (Арабский алфавит)

Форма изолированного представления (Арабский алфавит)

Форма символов, заключенных в кружок

Надстрочная форма

Подстрочная форма

Форма вертикального представления

Широкий (или дзенкаку) символ совместимости (японский алфа- вит)

Узкий (или ханкаку) символ совместимости (японский алфавит)

Форма уменьшенного представления (для совместимости с ки- тайскими символами)

Шрифт квадратной формы для китайского, японского и корей- ского языков

Простейшая дробь

Прочие символы совместимости
(продолжение)

Модуль unicodedata
373
digit(unichr [, default])
Возвращает целое значение цифрового символа unichr. Если unichr не явля- ется цифрой, возвращается значение аргумента default или возбуждается исключение ValueError, если этот аргумент опущен. Эта функция отличает- ся от функции decimal() тем, что может принимать символы, которые мо- гут представлять цифры, но не являются десятичными цифрами.
east_asian_width(unichr)
Возвращает строку, обозначающую ширину символа unichr для восточно- азиатских языков.
lookup(name)
Отыскивает символ по его имени. Например, вызов lookup(‘COPYRIGHT SIGN’) вернет соответствующий символ Юникода. Наиболее распространенные имена символов можно найти по адресу http://www.unicode.org/charts.
mirrored(unichr)
Возвращает 1, если символ unichr является зеркально отражаемым при двунаправленном письме, в противном случае возвращает 0. Зеркально от- ражаемым называется тот символ, чей внешний вид должен изменяться при отображении текста в обратном порядке. Например, символ ‘(‘ являет- ся зеркально отражаемым, потому что при выводе текста справа налево его следует отразить в символ ‘)’.
name(unichr [, default])
Возвращает имя символа Юникода unichr. Возбуждает исключение ValueEr- ror
, если имя не определено, или возвращает значение аргумента default, если он не был опущен. Например, вызов name(u’\xfc’) вернет ‘LATIN SMALL
LETTER U WITH DIAERESIS’
normalize(form, unistr)
Нормализует строку Юникода unistr в соответствии с нормальной формой
form
. В аргументе form можно передать строку ‘NFC’, ‘NFKC’, ‘NFD’ или ‘NFKD’.
Нормализация строки в определенной степени связана с композицией и де- композицией определенных символов. Например, строка Юникода со сло- вом «resumй» может быть представлена как u’resum\u00e9’ или как u’resume\
u0301’
. В первом случае акцентированный символ й представлен одним символом, а во втором он представлен буквой e, за которой следует при- соединяемый знак акцента (ґ). При использовании формы нормализации
‘NFC’
строка unistr будет преобразована так, что будет содержать только скомпонованные символы (так, символ й будет представлен единственным символом). При использовании формы нормализации ‘NFD’ строка unistr будет преобразована так, что будет содержать комбинационные знаки (на- пример, символ й будет представлен буквой e, за которой следует знак ак- цента). При использовании форм ‘NFKC’ и ‘NFKD’ нормализация выполняется так же, как и при использовании форм ‘NFC’ и ‘NFD’, за исключением того, что в этом случае дополнительно выполняется преобразование некоторых символов, которые могут быть представлены больше чем одним символом
Юникода. Например, римским цифрам соответствуют собственные симво- лы Юникода, но они также могут быть представлены символами латинско-

374
Глава 16. Работа с текстом и строками го алфавита I, V, M и так далее. При использовании форм ‘NFKC’ и ‘NFKD’ спе- циальные символы римских цифр будут преобразованы в их эквиваленты с использованием символов латинского алфавита.
numeric(unichr [, default])
Возвращает числовое значение символа Юникода в виде числа с плаваю- щей точкой. Если числовое значение не определено, возвращает значение аргумента default или возбуждает исключение ValueError. Например, символ
U+2155
(символ, изображающий дробь “1/5”) имеет числовое значение 0.2.
unidata_version
Строка, содержащая номер версии базы данных символов Юникода (на- пример, ‘5.1.0’).
Примечание
Дополнительные сведения о базе данных символов Юникода можно найти по адресу: http://www.unicode.org.

1   ...   25   26   27   28   29   30   31   32   ...   82


написать администратору сайта