Проблемы с многострочным регулярным выражением python 3.x?

Я очень новичок в read_xml.py и начал с ним несколько недель назад. С тех пор я смог решить любые проблемы с исследованиями и чтением. Но эта проблема вызывает у меня головные боли с нескольких часов, и я не могу найти подходящего решения.

Я создал образец import re с open ( 'test_file.xml' ) как xml_source : data = xml_source . read () xml_result = re . compile ( r '<title> (. +?) </ title>' ) mo = xml_result . поиск ( данные ) print ( mo . group ( 1 )) ( test_file.xml ) на моем жестком диске в папке, где также находится мой файл TinkerTry.

Содержание read_xml.py(до)

import re

with open('test_file.xml') as xml_source:
  data = xml_source.read()
  xml_result = re.compile(r'<title>(.+?)</title>
<link href="(.+?)"/>', re.MULTILINE)
  mo = xml_result.search(data)
  print(mo.group(1))

возвращает мне, Pythonчто нужно.

Но если я пойду дальше, как это

Содержание read_xml.py(сейчас):

XML

это не шов, чтобы найти / сопоставить что-нибудь больше ...

python,regex,xml,

0

Ответов: 1


1 принят

Короче: не надо. Если вы находитесь в состоянии обучения Python(или на любом другом языке, если на то пошло), попытка анализа XMLузлов с регулярным выражением обычно считается анти-шаблоном . Вместо этого используйте синтаксический анализатор (это то, для чего они были созданы).


Для вашего конкретного примера это может привести к:

from lxml import etree
tree = etree.parse('test.xml')
root = tree.getroot()

for title in root.xpath("//item/title"):
    print(title.text)

И дает

It's Bugtober, with Adobe Flash crashes, numerous CVE vulnerability patches for Wi-Fi and routers, and an Intel SPI vulnerability patch for most Xeon D Supermicro SuperServers
Supermicro Xeon D SuperServer BIOS 1.2c / IPMI 3.58 released
Windows 10 Fall Creators Update introduces GPU monitoring features built right into Task Manager
VMUG Advantage EVALExperience includes latest VMware vRealize Log Insight 4.5 syslog server appliance for easy vSphere, vSAN, IoT, and networking gear log file analysis
Road-warrior productivity boosted by ASUS ZenScreen MB16AC secondary travel display that connects to Mac or PC with just one USB-C or USB 3.0 cable


Понимаете, это делает более понятным и понятным код. Вам может понадобиться установить lxmlчерез pip install lxmlпервую.

Примечание. В вашем XML-файле произошла ошибка, которую мне нужно было исправить, чтобы это работало ( linkтег был открыт, но никогда не закрывался) .

питон, регулярное выражение, XML,
Похожие вопросы
Яндекс.Метрика