Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 58

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 58 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 582018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 58)

Мы уже использовали функцию хв1. еах захитт1з. еесаре() из модуля хв1 зах, захе(11е (для экранированияслужебныхсимволов «й», «<» и «>»). Существует также функция хв1. ззх. ззхотт1з. цоотезтт г(), которая выполняет то же действие, но дополнительно экранирует кавычки (чтобы текст можно было использовать в атрибутах тегов); обратное преобразование можно выполнить с помощью функции хв1. еах, пахот т1е. опезсаре(). В библиотеке существует еще два парсера. Модуль хв1. рагзеге.

ехрат может использоваться для работы с документами ХМ1 с применением библиотеки ехра1, при наличии этой библиотеки в системе, и модуль хв1. ет гее. Е1евептТгее может использоваться для работы с документами ХМЬ через интерфейс словарей и списков. (По умолчанию парсеры 1)ОМ и дерева элементов за кулисами сами используют парсер, использующий библиотеку ехрзт.) Порядок создания документов ХМЬ вручную, с применением модулей 1)ОМ и деревьев элементов, и парсинг с использованием парсеров 1)ОМ, ЯАХ и дерева элементов, описывается в главе 7. Пример: модуль хгтз!.етгее.Е!елзелтТгее Парсеры 1)ОМ и ЗАХ предоставляют прикладной программный интерфейс, которым пользуются опытные программисты, хорошо знающие формат ХМЬ, а модуль хв1, ет гее.

Е1евептТгее предлагает более простой и более естественный для языка Ру1)топ подход к парсингу и созданию документов ХМ1. Модуль дерева элементов совсем недавно был добавлен в стандартную библиотеку' и потому может оказаться незнакомым для некоторых читателей. Поэтому мы представим здесь очень короткий пример, чтобы можно было составить общее представление об этом модуле.

В главе 7 будет представлен более сложный пример и проведено сравнение программного кода, использующего парсеры 1)ОМ и ЗАХ. Веб-сайт организации 1чОАА (1ча1!опа! Осеап1с апс) Айповр)тег!с Ас)ш)- и!э$гаь!оп — Национальное управление по исследованию океанов и атмосферы) правительства США предоставляет самые разнообразные данные, включая файл в формате ХМЬ, в котором перечислены метео- Модуль хв1. ет гее.

Е! евепттгее был включен в стандартную библиотеку а версии Ру»)топ 2.5. 266 Глава 5. Модули рологические станции США. Файл насчитывает свыше 20000 строк и содержит сведения примерно о двух тысячах метеорологических станций. Ниже приводится типичный пример одной из записей: <Вга1!оп> <ага!!оп 1а>к803</вга11сп ы> <зга!е>КА</зга(а> <в(а11оп паве>Воз!оп, Еодап 1п1агпа11опа1 А!грег!</зга1!оп паве> <ха1 нг1>пмр,//ива!пег, дон/аа1а/снггеп1 оьз/к808. ха1</хн1 нг1> </З<а(1оп> Ь>пагу = дахр,преп(Г>1апаае).геап() гп = !с.в<г>пд10(ь(пагу.засосе("нгг8")) Функция дг!р. преп() из модуля да!р напоминает встроенную функцию преп( ), за исключением того, что она читает файлы, сжатые при помощи утилиты яэ!р (то есть с файлы с расширением .дг), просто как двоичные данные.

Нам необходимо обеспечить доступность этих данных для парсера в виде файла, поэтому мы использовали метод Ьу!ев. Вессье() для преобразования двоичных данных в строку с кодировкой символов [ТТР-8 (эта кодировка по умолчанию используется для файлов ХМЬ) и создали объект ао.51г!пд10„напоминающий файл, со строкой, вмещающей все содержимое файла ХМЬ. а Тнп данных Ьутав, стр. 344 а Тнп данных 10. 81г1пд- 10, стр. 249 ггеа = ха1.аггее е1ааапгтгаа.е1епепгтгаа() гоо1 = ггее.рагве(гп) в1а1!опз = [) Гог е1ааеп( >п 1гаа.да!>!ага!о<("Зга1>оп пана").

вгаг>опз. аррепз(а1ааапг.гах1) Здесь мы создали новый объект ха1. еггее. Е1еаеп[Тгее. Е1еаепгТгее и передали ему объект файла, откуда он будет читать содержимое файла ХМЬ, который нам требуется проанализировать. Парсер требует, чтобы ему был передан объект файла, открытого для чтения, хотя в действительности он читает его содержимое в строку объекта ао.51г!пд10. Нам требуется извлечь из файла названия метеорологических станций, и это легко сделать с помощью метода ха1.

е1гее. Е1еаеп1Тгее. Е1еаеп1Тгее.де!!1егагсг(), который возвращает итератор, выполняющий итерации по всем объектам х~п1.е!гее Е1еаеп1Тгее.Е1еаепг, имеющим Мы исключили несколько строк и уменьшили отступы. Размер файла составляет примерно 840 Кбайт, поэтому мы сжали его с помощью яз!р до более приемлемого размера в 72 Кбайт. К сожалению, парсер на основе анализа элементов дерева требует либо имя файла, либо объект файла, но он не в состоянии работать со сжатыми файлами, так как с его точки зрения такие файлы являются набором случайных двоичных данных.

Решить эту проблему можно, выполнив следующие два действия: Обзор стандартной библиотеки пзыка рутбоп 267 тег с указанным именем. Чтобы извлечь текст, достаточно воспользоваться атрибутом техт элемента. Как и в случае с функцией оз. иа1К(), нам не требуется предусматривать рекурсивную обработку — методитератор сам сделает все необходимое. Если метод вызвать без имени тега, то с помощью полученного итератора можно будет выполнить обход всех элементов документа ХМ) .

Прочие модули В книге недостаточно места, чтобы охватить почти 200 пакетов и модулей, входящих в состав стандартной библиотеки. Тем не менее этого краткого обзора вполне достаточно, чтобы получить представление о некоторых ключевых пакетах, применяемых в наиболее важных областях программирования. В последнем подразделе этого раздела мы рассмотрим еще несколько областей, представляющих для нас интерес.

В предыдущем разделе мы видели, насколько просто создавать тесты в строках документирования и запускать их с помощью модуля Зостезт. В составе библиотеки имеется также платформа модульного тестирования, реализованная в виде модуля оп(ттезт, — это версия платформы тестирования П)п11 языка )атга, реализованная для языка РуФ)топ. Кроме того, модуль с)остезт предоставляет некоторые возможности интеграции с модулем оп(ттеат.

Помимо этого, существуют платформы тестирования, созданные сторонними разработчиками, например ру. тезт (сос(езреаИ.пег/ру/Жзт/) и позе (шшш зете(ЫпааЬоитогапае.сот/тг(/рго/естз/позе/). Приложения, работающие в неинтерактивном режиме, такие как серверы, часто сообщают о проблемах посредством записи сообщений в файлы журналов. Модуль 1орц! пр предоставляет универсальный интерфейс для записи сообщений в файлы журналов, а также он способен отправлять сообщения с помощью запросов НТТР ОЕТ и РОЯТ, посредством сонетов или по электронной почте.

В библиотеке имеется множество модулей, позволяющих выполнять интроспекцию и манипулирование программным кодом, и хотя их обсуждение выходит далеко за рамки этой книги, тем не менее следует упомянуть о модуле ррг1пт, который содержит функции форматированного вывода объектов Ру$)топ, включая коллекции, что иногда бывает удобно при отладке. В главе 8 будет представлен простой пример использования модуля 1парест, выполняющий интроспекцию существующих объектов. Модуль тпгеаотпр предоставляет поддержку создания многопоточных приложений, а модуль овесе реализует три различных типа очередей, которые могут безопасно использоваться в многопоточных приложениях.

Тема управления несколькими потоками выполнения будет рассматриваться в главе 8. 268 Глава 5, Модули В языке Ру1Ьоп отсутствует встроенная поддержка создания приложений с графическим интерфейсом, тем не менее имеется несколько библиотек графического интерфейса, которые могут использоваться в программах на языке Ру(Ьоп.

Модуль гг!лгег обеспечивает доступ к библиотеке Т)г, которая обычно устанавливается вместе с системой. Программирование графического интерфейса рассматривается в главе 13. Модуль авс (АЬв1гас1 Вазе С1авв — базовый абстрактный класс) предоставляет функции, необходимые для создания базовых абстрактных классов. Этот модуль будет рассматриваться в главе 8.

Модуль сору предоставляет функции сору сору() и сору. Зеерсору( ), которые уже обсуждались в главе 3. Доступ к внешним функциям, то есть к функциям в разделяемых библиотеках (файлы лИ в Ж1пг(овгз, .е(уИЬ вЂ” в Мас ОЯ Х и файлы .зов в апик), обеспечивается модулем сгурез, В языке Ру1Ьоп имеется также поддержка С АР1, благодаря чему имеется возможность создавать нестандартные типы данных и функции на языке С и обеспечивать их доступность из программного кода на языке Ру1Ьоп. Обсуждение модуля сгурев и поддержки С АР1 выходит далеко за рамки этой книги. Если ни один из пакетов и модулей, упомянутых в этом разделе, не обеспечивает необходимые функциональные возможности, то прежде чем приступать к разработке собственных функций, ознакомьтесь с описанием глобального каталога модулей Ру(Ьоп (О1оЬа! Моди1е 1пдех); возможно, там вы найдете подходящий модуль, поскольку здесь мы не в состоянии упомянуть все существующие модули.

В случае неудачи попробуйте поискать нужный модуль в каталоге пакетов Ру(Ьоп (Ру(Ьоп Рас!саяе 1пе(ех — рур1.ругйоп.ога/рур(), в котором содержится несколько тысяч расширений для Ру(Ьоп — от маленьких модулей, состоящих из единственного файла, и до огромных пакетов библиотек и платформ, насчитывающих сотни модулей. В заключение Эта глава была начата с рассмотрения нескольких разновидностей синтаксиса, используемых для импортирования пакетов, модулей и объектов, находящихся внутри модулей. Мы отметили, что многие программисты предпочитают использовать синтаксис 1врогг )эроггаЫе, чтобы избежать конфликтов имен, и что не следует давать программам и модулям имена, совпадающие с модулями или каталогами Ру1Ьоп верхнего уровня. Мы также обсудили пакеты Ру1Ьоп.

Пакеты — это обычные каталоги, содержащие файл (п(1 .ру и один или более модулей .ру. Файл (п(1 .ру может быть пустым, иодля поддержки синтаксиса Ггоз аэ- рогтаЫе 1зрсгГ * мы можем создать в этом файле специальную пере- В заключение 269 менную аП, представляющую собой список имен в модуле. Кроме того, в файл (л(! чэу можно поместить любой программный код, выполняющий инициализацию. Также было отмечено, что пакеты могут вкладываться друг в друга, для чего достаточно просто создать подкаталоги, каждый из которых содержит свой собственный файл (л)(,ру. Были описаны два нестандартных модуля. Первый из них предоставляет всего несколько функций и имеет очень простые доктесты.

Характеристики

Тип файла
DJVU-файл
Размер
6,88 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее