Анализ с помощью регулярных выражений Python

analiz s pomoshhju regulyarnyh vyrazhenij python Текст и язык

В некоторых ситуациях для анализа документов XML можно использовать регулярные выражения, с которыми мы познакомились выше. Они не являются полноценными инструментами синтаксического анализа и не слишком надежны и точны в ситуациях, когда в документе может присутствовать произвольный текст (текст в атрибутах тегов в особенности может сбить их с толку). Однако там, где они применимы, они предоставляют наиболее простой способ. Сценарий в примере 19.9 демонстрирует, как можно реализовать анализ файла XML из примера 19.8 с применением модуля re, о котором рассказывалось в предыдущем разделе. Как и все четыре примера, которые будут представлены в этом разделе, он просматривает содержимое файла XML в поисках номеров ISBN и связанных с ними названий и сохраняет их в виде ключей и значений в словаре Python.

Пример 19.9. PP4E\Lang\Xml\rebook.py

"""

Анализ XML: регулярные выражения (ненадежное и неуниверсальное решение)

import re, pprint

text = open(‘books.xml’).read() # str, если шаблон str

pattern = ‘(?s)isbn="(.*?)".*?<title>(.*?)</title>’ # *?=минимальный

found = re.findall(pattern, text) # (?s)=mo4ke сответств. /n

mapping = {isbn: title for (isbn, title) in found} # словарь из списка pprint.pprint(mapping) # кортежей

Вызов метода re.findall в этом сценарии отыскивает все интересующие нас вложенные теги, извлекает их содержимое и возвращает список кортежей, включающих содержимое двух групп в круглых скобках. Модуль Python pprint позволяет вывести созданный словарь в удобно отформатированном виде. Этот сценарий работает, но только пока содержимое файла не отклоняется от ожидаемого формата до такой степени, что анализ пойдет по неверному пути. Кроме того, мнемоника XML, обозначающая «&» в названии первой книги, не преобразуется автоматически:

C:\…\PP4E\Lang\Xml> python rebook.py

подпись: {'0-596-00128-2'
'0-596-00797-3'
'0-596-10046-9'
'0-596-15806-8'
'0-596-15808-4'
'0-596-15810-6'
‘Python &amp; XML’,

‘Python Cookbook, 2nd Edition’,

‘Python in a Nutshell, 2nd Edition’,

‘Learning Python, 4th Edition’,

‘Python Pocket Reference, 4th Edition’, ‘Programming Python, 4th Edition’}

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий