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

справочник по 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
страница59 из 82
1   ...   55   56   57   58   59   60   61   62   ...   82
Глава
24
.
Обработка и представление данных
в Интернете
В этой главе описываются модули, обеспечивающие поддержку форматов, таких как base 64, HTML, XML и JSON, обычно используемых для переда- чи данных через Интернет.
Модуль base64
Модуль base64 используется для преобразования двоичных данных в тек- стовое представление и обратно, с использованием кодировки base 64, base
32 или base 16. Кодировка base 64 обычно используется для кодирования двоичных данных, пересылаемых по электронной почте, в виде вложений, или по протоколу HTTP. Официальное описание этого формата приводится в документах RFC-3548 и RFC-1421.
При использовании формата base 64 данные объединяются в группы по
24 бита (3 байта). Затем каждая 24-битная группа делится на четыре 6-би- товых компонента. Далее каждое 6-битное значение представляется в виде отдельного печатного символа ASCII из следующего алфавита:
Значение
Символ
0–25
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26–51
abcdefghijklmnopqrstuvwxyz
52–61 0123456789 62
+
63
/
дополнение
=
Если количество байтов во входном потоке не кратно 3 (24 битам), послед- ние байты дополняются до полной 24-битовой группы. Для обозначения дополнительных данных используются символы ‘=’, которые добавляются в конец преобразованных данных. Например, при преобразовании 16-бай-

678
Глава 24. Обработка и представление данных в Интернете товой последовательности получается пять 3-байтовых групп и остается еще один байт. Этот последний байт дополняется до образования полной
3-байтовой группы. Из этой группы затем образуются два символа из ал- байтовой группы. Из этой группы затем образуются два символа из ал- группы. Из этой группы затем образуются два символа из ал- группы. Из этой группы затем образуются два символа из ал-
. Из этой группы затем образуются два символа из ал-
Из этой группы затем образуются два символа из ал- фавита base 64 (первые 12 бит в которых включают 8 бит фактических дан- base 64 (первые 12 бит в которых включают 8 бит фактических дан-
64 (первые 12 бит в которых включают 8 бит фактических дан- ных), за которыми следует пара символов ‘==’, представляющих дополне- ние. В формате base 64 в конце блока данных допускаются только ноль, один (=) или два (==) символа дополнения.
При использовании формата base 32 двоичные данные объединяются в группы по 40 бит (5 байт). Каждая 40-битная группа делится на восемь
5-битовых компонентов. Далее каждое 5-битное значение представляется с использованием следующего алфавита:
Значение
Символ
0–25
ABCDEFGHIJKLMNOPQRSTUVWXYZ
26–31 2-7
Как и при использовании формата base 64, если в конце входного потока не получается полной 40-битовой группы, она дополняется до 40 бит, а для обозначения дополнительных данных используется символ ‘=’. В выход- ных данных может присутствовать не более шести символов дополнения
(‘======’), – когда последняя группа включает в себя только один байт фак- тических данных.
Для представления данных в формате base 16 используется стандартная шестнадцатеричная форма записи. Каждая 4-битная группа представля- ется цифрой ‘0’–’9’ или буквой ‘A’–’F’. В формате base 16 потребность в до- base 16 потребность в до-
16 потребность в до- полнении не возникает.
b64encode(s [, altchars])
Преобразует строку байтов s в формат base 64. В аргументе altchars можно передать строку из двух символов, которая определяет альтернативы для символов ‘+’ и ‘/’, обычно используемых для представления данных в фор- мате base 64. Эту особенность можно использовать, когда данные в формате base 64 используются в именах файлов или в адресах URL.
b64decode(s [, altchars])
Декодирует строку s, содержащую данные в формате base 64, и возвращает строку байтов с декодированными данными. В аргументе altchars можно передать строку из двух символов, которая определяет альтернативы для символов ‘+’ и ‘/’, обычно используемых для представления данных в фор- мате base 64. Если входная строка s содержит недопустимые символы или некорректное дополнение, функция возбуждает исключение TypeError.
standard_b64encode(s)
Преобразует строку байтов s в стандартный формат base 64.
standard_b64decode(s)
Декодирует строку s, содержащую данные в стандартном формате base 64.

Модуль base64
679
urlsafe_b64encode(s)
Преобразует строку байтов s в формат base 64, используя символы ‘-’ и ‘_’ вместо ‘+’ и ‘/’ соответственно. Аналогично вызову b64encode(s, ‘-_’).
urlsafe_b64decode(s)
Декодирует строку s, содержащую данные в формате base 64, где вместо символов ‘+’ и ‘/’ используются символы ‘-’ и ‘_’ соответственно.
b32encode(s)
Преобразует строку байтов s в формат base 32.
b32decode(s [, casefold [, map01]])
Декодирует строку s, содержащую данные в формате base 32. Если в аргу- base 32. Если в аргу-
32. Если в аргу- менте casefold передать значение True, допустимыми будут считаться ал- фавитные символы верхнего и нижнего регистров. В противном случае до- пустимыми будут считаться только символы верхнего регистра (по умол- чанию). Аргумент map01, если присутствует, определяет символ, в который будет отображаться цифра ‘1’ (например, в символ ‘I’ или в символ ‘L’).
Если этот аргумент определен, цифра ‘0’ будет отображаться в символ ‘O’.
Если входная строка содержит недопустимые символы или некорректное дополнение, функция возбуждает исключение TypeError.
b16encode(s)
Преобразует строку байтов s в формат base 16 (шестнадцатеричное пред- base 16 (шестнадцатеричное пред-
16 (шестнадцатеричное пред- ставление).
b16decode(s [,casefold])
Декодирует строку s, содержащую данные в формате base 16. Если в аргумен- base 16. Если в аргумен-
16. Если в аргумен- те casefold передать значение True, допустимыми будут считаться алфавитные символы верхнего и нижнего регистров. В противном случае допустимыми будут считаться только символы ‘A’–’F’ верхнего регистра (по умолчанию).
Если входная строка содержит недопустимые символы или какие-либо дру- гие нарушения, функция возбуждает исключение TypeError.
Ниже перечислены функции, составляющие прежний интерфейс модуля base64
, которые могут вам встретиться в существующих программах на языке Python:
decode(input, output)
Декодирует данные в формате base 64. В аргументе input передается имя файла или объект файла, открытый для чтения. В аргументе output пере- дается имя файла или объект файла, открытый для записи в двоичном ре- жиме.
decodestring(s)
Декодирует строку s, содержащую данные в формате base 64. Возвращает строку с декодированными двоичными данными.
encode(input, output)
Преобразует данные в формат base 64. В аргументе input передается имя файла или объект файла, открытый для чтения в двоичном режиме. В аргу- менте output передается имя файла или объект файла, открытый для записи.

680
Глава 24. Обработка и представление данных в Интернете
encodestring(s)
Преобразует строку байтов s в формат base 64.
Модуль binascii
Модуль binascii содержит низкоуровневые функции, используемые для преобразования двоичных данных в различные форматы ASCII и обратно, например форматы base 64, BinHex или UUencoding.
a2b_uu(s)
Преобразует текстовую строку s с данными в формате uuencode в двоичное представление и возвращает строку байтов. Обычно текстовые строки со- держат по 45 байт, за исключением последней, которая может быть мень- ше. Неполная строка с данными может дополняться пробелами.
b2a_uu(data)
Преобразует строку с двоичными данными в текстовую строку в формате uuencode, содержащую только символы ASCII. Длина строки data не долж- на превышать 45 байт, в противном случае будет возбуждено исключение
Error
a2b_base64(string)
Преобразует строку string с данными в формате base 64 в двоичное пред- base 64 в двоичное пред-
64 в двоичное пред- ставление и возвращает строку байтов.
b2a_base64(data)
Преобразует строку с двоичными данными в текстовую строку в формате base 64, содержащую только символы ASCII. Длина строки data не долж- на превышать 57 байт, если результат предполагается отправлять по элек- тронной почте (в противном случае лишние данные могут быть отсечены).
a2b_hex(string)
Преобразует строку string с данными в шестнадцатеричном представ- лении в двоичные данные. Эта функция может также вызываться как unhexlify(
string)
b2a_hex(data)
Преобразует строку с двоичными данными в строку с шестнадцатеричным представлением. Эта функция может также вызываться как hexlify(data).
a2b_hqx(string)
Преобразует строку с данными в формате BinHex 4 в двоичное представле-
BinHex 4 в двоичное представле-
4 в двоичное представле- ние без выполнения декомпрессии RLE (Run-Length Encoding – кодирова-
RLE (Run-Length Encoding – кодирова-
(Run-Length Encoding – кодирова-
Run-Length Encoding – кодирова-
-Length Encoding – кодирова-
Length Encoding – кодирова-
Encoding – кодирова-
Encoding – кодирова-
– кодирова- ние длины повторения).
rledecode_hqx(data)
Выполняет RLE-декомпрессию двоичных данных в аргументе data. Возвра- щает распакованные данные, если на входе были получены полные дан- ные, в противном случае возбуждает исключение Incomplete.

Модуль csv
681
rlecode_hqx(data)
Выполняет BinHex 4 RLE-сжатие данных data.
b2a_hqx(data)
Преобразует двоичные данные в строку формата BinHex 4, содержащую только символы ASCII. Данные в аргументе data уже должны быть сжаты по алгоритму RLE. Кроме того, если это не последний фрагмент данных, длина аргумента data должна быть кратна числу 3.
crc_hqx(data, crc)
Вычисляет контрольную сумму BinHex 4 CRC строки байтов data. В аргу-
В аргу- менте crc передается начальное значение контрольной суммы.
crc32(data [, crc])
Вычисляет контрольную сумму CRC-32 строки байтов data. В необязатель- ном аргументе crc можно передать начальное значение контрольной сум- мы. Если этот аргумент опущен, аргумент crc получает значение по умол- чанию 0.
Модуль csv
Модуль csv используется для чтения и записи файлов, содержащих дан- ные, разделенные запятыми (Comma-Separated Values, CSV). Файлы в фор-
Comma-Separated Values, CSV). Файлы в фор-
-Separated Values, CSV). Файлы в фор-
Separated Values, CSV). Файлы в фор-
Values, CSV). Файлы в фор-
Values, CSV). Файлы в фор-
, CSV). Файлы в фор-
CSV). Файлы в фор-
). Файлы в фор- мате CSV содержат текстовые строки, где каждая строка содержит значе- ния, разделенные символом-разделителем, обычно запятой (,) или симво- лом табуляции. Например:
Blues,Elwood,”1060 W Addison”,”Chicago, IL 60613”,”B263-1655-2187”,116,56
Разновидности этого формата часто используются в приложениях баз дан- ных и в электронных таблицах. Например, база данных может поддер- живать экспорт таблиц в формате CSV, что позволяет другим программам читать содержимое таблиц. Особые сложности начинают возникать, когда фактические данные содержат символ-разделитель. Так, в предыдущем примере одно из полей содержит запятую, и поэтому данное поле было за- ключено в кавычки. По этой причине для работы с подобными файлами ча- сто бывает недостаточно простых строковых операций, таких как split(‘,’).
reader(csvfile [, dialect [, **fmtparams])
Возвращает объект чтения, который воспроизводит значения для каждой строки в исходном файле csvfile. В аргументе csvfile допускается переда- вать любой итерируемый объект, который в каждой итерации воспроиз- водит полную строку текста. Возвращаемый объект является итератором, который в каждой итерации воспроизводит список строк. В аргументе dia-
lect
можно передать либо строку с названием диалекта, либо объект клас- са Dialect. Назначение аргумента dialect состоит в том, чтобы обеспечить учет различий между разными вариантами формата CSV. Единственными встроенными диалектами, которые поддерживаются этим модулем, яв- ляются диалекты ‘excel’ (по умолчанию) и ‘excel-tab’, однако существует возможность определять собственные диалекты, как будет описано ниже

682
Глава 24. Обработка и представление данных в Интернете в этом разделе. В fmtparams передается набор именованных аргументов, определяющих различные аспекты диалекта. Ниже перечислены допусти- мые именованные аргументы:
Именованный
аргумент
Описание
delimiter
Символ, используемый для отделения полей друг от друга (по умолчанию используется
‘,’
).
doublequote
Логический флаг, который определяет, как будет обраба- тываться символ кавычки (quotechar), входящий в значение поля. Если имеет значение True, символ кавычки будет просто продублирован. Если имеет значение False, перед ним будет добавлен экранирующий символ (escapechar). По умолчанию принимает значение True.
escapechar
Символ, используемый как экранирующий символ, когда раз- делитель появляется внутри поля и при этом параметр quoting имеет значение QUOTE_NONE. По умолчанию принимает значе- ние None.
lineterminator
Последовательность символов, завершающих строку (по умол- чанию используется последовательность
‘\r\n’
).
quotechar
Символ, используемый в качестве кавычки для заключения поля, содержащего символ-разделитель (по умолчанию ис- пользуется
‘”’
).
skipinitialspace
Если получает значение True, пробельные символы, следую- щие непосредственно за символом-разделителем, игнорируют- ся (по умолчанию принимает значение False).
writer(csvfile [, dialect [, **fmtparam]])
Возвращает объект записи, который можно использовать для создания файлов формата CSV. В аргументе csvfile допускается передавать любой объект, похожий на файл, который поддерживает метод write(). Аргумент
dialect
имеет тот же смысл, что и в функции reader(), и используется для преодоления различий между различными вариантами формата CSV. Ар-
CSV. Ар-
. Ар- гумент fmtparams имеет тот же смысл, что и в функции reader(). Однако в нем допускается указывать еще один именованный аргумент:
Именованный
аргумент
Описание
quoting
Управляет заключением выходных данных в кавычки. Может принимать одно из следующих значений: QUOTE_ALL (в кавычки заключаются все поля), QUOTE_MINIMAL (в кавычки заключаются только поля, содержащие символ-разделитель или начинаю- щиеся с символа кавычки), QUOTE_NONNUMERIC (в кавычки заклю- чаются все нечисловые поля) или QUOTE_NONE (поля никогда не заключаются в кавычки). По умолчанию принимает значение
QUOTE_MINIMAL

Модуль csv
683
Э
кземпляр w объекта записи поддерживает следующие методы:
w.writerow(row)
Записывает в файл единственную строку данных. Аргумент row должен со- держать последовательность строковых или числовых значений.
w.writerows(rows)
Записывает несколько строк данных. Аргумент rows должен быть последо- вательностью записей, которые передаются методу writerow().
DictReader(csvfile [, fieldnames [, restkey [, restval [, dialect [, **fmt-
params]]]]])
Возвращает объект чтения, который действует как обычный объект чте- ния, но при чтении данных из файла вместо списка строк возвращает сло- варь объектов. В аргументе fieldnames передается список имен полей, ко- торые будут использоваться в качестве ключей возвращаемого словаря.
Если этот аргумент опущен, имена полей будут взяты из первой строки исходного файла. В аргументе restkey передается имя ключа словаря, ко- торый будет использоваться для сохранения лишних данных, например, когда количество полей в записи превышает количество имен полей в ар- гументе fieldnames. Аргумент restval определяет значение по умолчанию, которое будет использоваться в качестве значения отсутствующих полей, например, когда количество полей в записи меньше количества имен полей в аргументе fieldnames. По умолчанию аргументы restkey и restval прини- прини- мают значение None. Аргументы dialect и fmtparams имеют тот же смысл, что и в функции reader().
DictWriter(csvfile, fieldnames [, restval [, extrasaction [, dialect [, **fm-
tparams]]]])
Возвращает объект записи, который действует так же, как обычный объ- ект записи, но используется для записи в файл содержимого словарей. Ар- гумент fieldnames определяет имена полей и порядок их следования при за- писи в файл. Аргумент restval определяет значение, которое должно быть записано в файл вместо ключа, указанного в аргументе fieldnames, но от- сутствующего в словаре. В аргументе extrasaction передается строка, кото- рая определяет, что делать, если в словаре имеются ключи, отсутствующие в аргументе fieldnames. По умолчанию аргумент extrasaction принимает значение ‘raise’, что соответствует возбуждению исключения ValueError.
Можно использовать значение ‘ignore’, и в этом случае лишние ключи сло- варя будут игнорироваться. Аргументы dialect и fmtparams имеют тот же смысл, что и в функции writer().
Экземпляр w класса DictWriter поддерживает следующие методы:
1   ...   55   56   57   58   59   60   61   62   ...   82


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