Главная страница
Навигация по странице:

  • Примечания Формат quoted-printable появился раньше Юникода и может применяться толь- ко для представления 8-битовых данных. Хотя обычно этот формат используется 706

  • Атрибут узла Описание

  • .hasAttributes() Возвращает True, если узел имеет какие-либо атрибуты. n

  • справочник по 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
    страница63 из 82
    1   ...   59   60   61   62   63   64   65   66   ...   82
    [, strict])
    Добавляет в отображение новый тип MIME. В аргументе type передается тип MIME, такой как ‘text/plain’, в аргументе extрасширение имени файла, такое как ‘.txt’, и в аргументе strict – логический флаг, который указывает, является ли данный тип MIME официально зарегистрирован-
    MIME официально зарегистрирован- официально зарегистрирован- ным. По умолчанию принимает значение True.
    Модуль quopri
    Модуль quopri обеспечивает преобразование строк байтов в формат ‘quoted- printable’
    и обратно. Этот формат в основном используется для кодирова- и обратно. Этот формат в основном используется для кодирова- обратно. Этот формат в основном используется для кодирова- обратно. Этот формат в основном используется для кодирова-
    . Этот формат в основном используется для кодирова-
    Этот формат в основном используется для кодирова- ния текста с 8-битовыми символами, большая часть которых читается при использовании кодировки ASCII, но среди которых может содержаться не-
    ASCII, но среди которых может содержаться не-
    , но среди которых может содержаться не- большое количество непечатаемых или специальных символов (например, символы в диапазоне 128-255). Ниже перечислены правила, которые при- меняются при преобразовании символов в формат ‘quoted-printable’:

    Модуль quopri
    705
    • Любой печатаемый, не пробельный символ ASCII, за исключением ‘=’, представляет сам себя.
    • Символ ‘=’ используется как экранирующий символ. Когда за ним сле- дуют две шестнадцатеричные цифры, они представляют символ с ука- занным значением (например, ‘=0C’). Сам знак равенства представляет- ся, как ‘=3D’. Если символ ‘=’ появляется в конце строки, он обозначает мягкий перенос строки. Такой перенос используется, только если длин- ную входную строку следует разбить на несколько выходных строк.
    • Пробелы и табуляции остаются без изменений, но в конце строки они могут удаляться.
    Этот формат часто используется для оформления документов, содержащих специальные символы из расширенного набора символов ASCII. Напри-
    ASCII. Напри-
    . Напри- мер, если документ содержит текст «Copyright © 2009», в языке Python его можно было бы представить в виде строки байтов b’Copyright \xa9 2009’. Та же строка в формате ‘quoted-printable’ выглядит как b’Copyright =A9 2009’, где специальный символ ‘\xa9’ был замещен экранированной последова- тельностью ‘=A9’.
    decode(input, output [, header])
    Декодирует данные в формате ‘quoted-printable’. В аргументах input и out-
    put
    передаются объекты, похожие на файлы, открытые в двоичном режиме.
    Если в аргументе header передается значение True, то символ подчеркива- ния (_) будет интерпретироваться как пробел. В противном случае он будет оставаться без изменений. Эту особенность можно использовать при пре- образовании заголовков MIME. По умолчанию принимает значение False.
    decodestring(s [, header])
    Декодирует строку s с данными в формате ‘quoted-printable’. В аргументе
    s
    можно передать строку Юникода или строку байтов, но результат всегда будет строкой байтов. Аргумент header имеет тот же смысл, что и в функ- ции decode().
    encode(input, output, quotetabs [, header])
    Преобразует данные в формат ‘quoted-printable’. В аргументах input и out-
    put
    передаются объекты, похожие на файлы, открытые в двоичном ре- передаются объекты, похожие на файлы, открытые в двоичном ре- объекты, похожие на файлы, открытые в двоичном ре- объекты, похожие на файлы, открытые в двоичном ре-
    , похожие на файлы, открытые в двоичном ре- похожие на файлы, открытые в двоичном ре- на файлы, открытые в двоичном ре- на файлы, открытые в двоичном ре- файлы, открытые в двоичном ре- файлы, открытые в двоичном ре-
    , открытые в двоичном ре- открытые в двоичном ре- в двоичном ре- в двоичном ре- двоичном ре- двоичном ре- ре- ре- жиме. Если в аргументе quotetabs передается значение True, в дополнение к обычным правилам символы табуляции также будут замещаться экра- нированными последовательностями. В противном случае они останутся в неизменном виде. По умолчанию аргумент quotetabs принимает значение
    False
    . Аргумент header имеет тот же смысл, что и в функции decode().
    encodestring(s [, quotetabs [, header]])
    Преобразует строку байтов s в формат ‘quoted-printable’. Результат всег- да является строкой байтов. Аргументы quotetabs и header имеют тот же смысл, что и в функции encode().
    Примечания
    Формат quoted-printable появился раньше Юникода и может применяться толь- ко для представления 8-битовых данных. Хотя обычно этот формат используется

    706
    Глава 24. Обработка и представление данных в Интернете для преобразования текста, в действительности он применяется только к сим- волам ASCII и к символам из расширенного набора ASCII, которые могут быть представлены одиночными байтами. При использовании этого модуля убедитесь, что файлы открыты в двоичном режиме, а строковые значения передаются в виде строк байтов.
    Пакет xml
    В состав стандартной библиотеки языка Python входят несколько модулей, предназначенных для обработки данных в формате XML. Тема обработки
    XML-документов слишком большая, и ее обсуждение выходит далеко за рамки этой книги. В этом разделе предполагается, что читатель уже зна- ком с основными понятиями, касающимися XML. Для изучения основ
    XML можно порекомендовать книги, такие как «Inside XML» Стива Холз- можно порекомендовать книги, такие как «Inside XML» Стива Холз-
    Inside XML» Стива Холз-
    XML» Стива Холз-
    XML» Стива Холз-
    » Стива Холз- нера (Steve Holzner) (New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    Steve Holzner) (New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    Holzner) (New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    Holzner) (New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    ) (New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    New Riders) или «XML in a Nutshell» Эллиотта Гароль-
    Riders) или «XML in a Nutshell» Эллиотта Гароль-
    Riders) или «XML in a Nutshell» Эллиотта Гароль-
    ) или «XML in a Nutshell» Эллиотта Гароль-
    XML in a Nutshell» Эллиотта Гароль- in a Nutshell» Эллиотта Гароль- in a Nutshell» Эллиотта Гароль- a Nutshell» Эллиотта Гароль- a Nutshell» Эллиотта Гароль-
    Nutshell» Эллиотта Гароль-
    Nutshell» Эллиотта Гароль-
    » Эллиотта Гароль- да (Elliotte Harold) и У. Скотта Менса (W. Scott Means) (O’Reilly and Associ-
    Elliotte Harold) и У. Скотта Менса (W. Scott Means) (O’Reilly and Associ-
    Harold) и У. Скотта Менса (W. Scott Means) (O’Reilly and Associ-
    Harold) и У. Скотта Менса (W. Scott Means) (O’Reilly and Associ-
    ) и У. Скотта Менса (W. Scott Means) (O’Reilly and Associ-
    W. Scott Means) (O’Reilly and Associ-
    . Scott Means) (O’Reilly and Associ-
    Scott Means) (O’Reilly and Associ-
    Means) (O’Reilly and Associ-
    Means) (O’Reilly and Associ-
    ) (O’Reilly and Associ-
    O’Reilly and Associ-
    ’Reilly and Associ-
    Reilly and Associ- and Associ- and Associ-
    Associ-
    Associ- ates). Существует несколько книг, посвященных обработке XML на языке
    Python, включая «Python & XML» Кристофера Джонса (Christopher Jones)
    (O’Reilly and Associates) и «XML Processing with Python» Сина Макграта
    (Sean McGrath) (Prentice Hall).
    Язык Python обеспечивает два вида поддержки формата XML. Первый тип – базовая поддержка двух основных стандартов парсинга XML, SAX и DOM. Стандарт SAX (Simple API for XML – простой прикладной интер-
    SAX (Simple API for XML – простой прикладной интер-
    (Simple API for XML – простой прикладной интер-
    Simple API for XML – простой прикладной интер-
    API for XML – простой прикладной интер-
    API for XML – простой прикладной интер- for XML – простой прикладной интер- for XML – простой прикладной интер-
    XML – простой прикладной интер-
    XML – простой прикладной интер-
    – простой прикладной интер- фейс для работы с форматом XML) основан на обработке событий, когда выполняется чтение XML-документа, и по мере того как встречаются эле-
    XML-документа, и по мере того как встречаются эле-
    -документа, и по мере того как встречаются эле- менты разметки XML, вызываются функции-обработчики, выполняющие обработку этих элементов. Стандарт DOM (Document Object Model – объект-
    DOM (Document Object Model – объект-
    (Document Object Model – объект-
    Document Object Model – объект-
    Object Model – объект-
    Object Model – объект-
    Model – объект-
    Model – объект-
    – объект- ная модель документов) основывается на представлении XML-документа в виде древовидной структуры. После построения дерева документа предо- ставляется возможность с помощью интерфейса DOM выполнять обход эле-
    DOM выполнять обход эле- выполнять обход эле- ментов дерева и извлекать данные. Ни SAX, ни DOM не являются интер-
    SAX, ни DOM не являются интер-
    , ни DOM не являются интер-
    DOM не являются интер- не являются интер- фейсами, свойственными исключительно языку Python. В языке Python просто реализован стандартный программный интерфейс, разработанный ранее для языков Java и JavaScript.
    Вы можете реализовать обработку XML-документов в своих программах, используя интерфейсы SAX и DOM, однако наиболее удобным программ-
    SAX и DOM, однако наиболее удобным программ- и DOM, однако наиболее удобным программ-
    DOM, однако наиболее удобным программ-
    , однако наиболее удобным программ- ным интерфейсом в стандартной библиотеке является интерфейс Element-
    Element-
    Tree. Этот интерфейс реализует характерный для Python подход к обра-
    Python подход к обра- подход к обра- ботке XML-документов, использующий все преимущества языка Python, и который большинство пользователей считают более простым и более бы- стрым по сравнению с SAX или DOM. В оставшейся части раздела будут рассматриваться все три подхода к обработке XML-документов, но интер-
    XML-документов, но интер-
    -документов, но интер- фейс ElementTree будет рассматриваться особенно подробно.
    Основное внимание в этом разделе будет уделяться только синтаксическо- му анализу данных в формате XML. Однако в состав стандартной библио-
    XML. Однако в состав стандартной библио-
    . Однако в состав стандартной библио-

    Пакет xml
    707
    теки языка Python входят модули, позволяющие реализовать новые типы парсеров, создавать новые документы XML с самого начала и так далее.
    Кроме того, существует множество сторонних расширений, добавляю- щих дополнительные возможности, такие как поддержка языков XSLT и XPATH. Ссылки на страницы с дополнительной информацией можно найти по адресу http://wiki.python.org/moin/PythonXml.
    Пример документа XML
    Ниже приводится пример типичного документа XML, в данном случае – описание рецепта.



    A southwest favorite!


    Large avocados, chopped
    Tomato, chopped
    White onion, chopped
    Fresh squeezed lemon juice
    Jalapeno pepper, diced
    Fresh cilantro, minced
    Garlic, minced
    Salt
    Ice-cold beer


    Combine all ingredients and hand whisk to desired consistency.
    Serve and enjoy with ice-cold beers.


    Документ состоит из элементов, которые начинаются и оканчиваются те- гами, например: . Обычно элементы могут вкладываться друг в друга и образовывать иерархии, например элементы вкла- дываются в элемент . В каждом XML-документе существует единственный элемент, который называется корневым элементом доку- мента. В данном примере это элемент . Элементы могут иметь до- полнительные атрибуты, как, например, элементы item в примере: Large avocados, chopped
    При работе с XML-документами обычно приходится иметь дело со всеми этими основными особенностями. Например, может потребоваться извле- кать текст и атрибуты из элементов определенных типов. Чтобы отыскать требуемые элементы, необходимо выполнить обход дерева документа, на- чиная с корневого элемента.

    708
    Глава 24. Обработка и представление данных в Интернете
    Модуль xml.dom.minidom
    М
    одуль xml.dom.minidom обеспечивает поддержку парсинга XML-документов и сохранение результатов в памяти, в виде древовидной структуры, соот- ветствующей стандарту DOM. В модуле имеется две функции, выполняю-
    DOM. В модуле имеется две функции, выполняю-
    . В модуле имеется две функции, выполняю- щие парсинг:
    parse(file [, parser])
    Анализирует содержимое файла file и возвращает узел, представляющий вершину дерева документа. В аргументе file передается имя файла или объект файла, открытый для чтения. В необязательном аргументе parser можно передать SAX2-совместимый объект парсера, который будет ис-
    SAX2-совместимый объект парсера, который будет ис-
    2-совместимый объект парсера, который будет ис- пользоваться для конструирования дерева. Если этот аргумент опущен, будет использоваться парсер по умолчанию.
    parseString(string [, parser])
    То же, что и parse(), за исключением того, что входные данные передаются в виде строки, а не в виде файла.
    Узлы
    Дерево документа, возвращаемое функциями парсинга, представляет со- бой коллекцию узлов, связанных между собой. Каждый объект n, пред- ставляющий узел, обладает следующими атрибутами, которые могут ис- пользоваться для извлечения информации и при обходе дерева:
    Атрибут узла
    Описание
    n.attributes
    Объект отображения, хранящий значения атрибутов (если имеются).
    n.childNodes
    Список всех дочерних узлов для узла n.
    n.firstChild
    Первый дочерний узел для узла n.
    n.lastChild
    Последний дочерний узел для узла n.
    n.localName
    Локальное имя элемента. Если в имени тега присутствует двоеточие (например, ‘’), в этом атрибуте будет на- ходиться часть имени, следующая за двоеточием.
    n.namespaceURI
    Пространство имен, ассоциированное с узлом n (если имеется).
    n.nextSibling
    Узел, следующий за данным узлом n в дереве и относящийся к тому же родительскому узлу. Если узел является последним среди узлов того же уровня, этот атрибут получает значение
    None
    n.nodeName
    Имя узла. Смысл зависит от типа узла.
    n.nodeType
    Целое число, описывающее тип узла. Принимает одно из сле- дующих значений, которые являются атрибутами класса Node:
    ATTRIBUTE_NODE
    , CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_
    FRAGMENT_NODE
    , DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE,
    ENTITY_NODE
    , ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_IN-
    STRUCTION_NODE
    или TEXT_NODE.

    Пакет xml
    709
    Атрибут узла
    Описание
    n.nodeValue
    Значение узла. Смысл зависит от типа узла.
    n.parentNode
    Ссылка на родительский узел.
    n.prefix
    Часть имени тега, предшествующая двоеточию. Например, для элемента ‘’ этот атрибут будет содержать зна- чение ‘foo’.
    n.previousSibling
    Узел, предшествующий данному узлу n в дереве и относящий- ся к тому же родительскому узлу.
    Кроме этих атрибутов, все узлы обладают следующими методами. Обычно они используются для манипулирования структурой дерева.
    n.appendChild(child)
    Добавляет новый дочерний узел child в узел n. Новый узел добавляется по- сле последнего дочернего узла.
    n.cloneNode(deep)
    Создает копию узла n. Если в аргументе deep передается значение True, все дочерние узлы также будут скопированы.
    n.hasAttributes()
    Возвращает True, если узел имеет какие-либо атрибуты.
    n.hasChildNodes()
    Возвращает True, если узел имеет какие-либо дочерние узлы.
    n.insertBefore(newchild, ichild)
    Вставляет новый дочерний узел newchild перед другим дочерним узлом ich-
    ild
    . Узел ichild уже должен быть дочерним узлом для n.
    n.isSameNode(other)
    Возвращает True, если узел other ссылается на тот же узел DOM, что и n.
    n.normalize()
    Объединяет смежные текстовые узлы в один текстовый узел.
    n.removeChild(child)
    Удаляет дочерний узел child из узла n.
    n.replaceChild(newchild,oldchild)
    Замещает дочерний узел oldchild узлом newchild. Узел oldchild должен быть дочерним узлом для узла n.
    Несмотря на многообразие типов узлов, которые могут присутствовать в дереве документа, все-таки наиболее часто приходится работать с узлами типа Document, Element и Text. Далее коротко описывается каждый из этих типов.

    710
    Глава 24. Обработка и представление данных в Интернете
    Узлы типа Document
    У
    зел d типа Document располагается на вершине дерева документа и пред- ставляет документ целиком. Он обладает следующими атрибутами и ме- тодами:
    d.documentElement
    Содержит корневой элемент всего документа.
    d.getElementsByTagName(tagname)
    Отыскивает все дочерние узлы и возвращает список элементов с именами тегов tagname.
    d.getElementsByTagNameNS(namespaceuri, localname
    1   ...   59   60   61   62   63   64   65   66   ...   82


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