Python 正则表达式实现 XML 解析和提取

2023-04-02 00:00:00 解析 提取 正则表达式

以下是 Python 中使用正则表达式实现 XML 解析和提取的示例代码:

import re

xml_str = """
<bookstore>
  <book category="Children">
    <title>Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="Web">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>
"""

# 用正则表达式提取 title 和 author 标签的内容
title_pattern = re.compile(r'<title>(.*?)</title>')
author_pattern = re.compile(r'<author>(.*?)</author>')

title_matches = title_pattern.findall(xml_str)
author_matches = author_pattern.findall(xml_str)

for title, author in zip(title_matches, author_matches):
    print(f'Title: {title}, Author: {author}')

输出结果如下:

Title: Harry Potter, Author: J.K. Rowling
Title: Learning XML, Author: Erik T. Ray

在上面的示例代码中,我们使用 re.compile() 函数创建了两个正则表达式模式,一个用于匹配 标签的内容,另一个用于匹配 标签的内容。接着,我们使用 re.findall() 函数在 XML 字符串中查找所有匹配模式的子串,并将它们存储在列表中。最后,我们使用 zip() 函数将 title_matches 和 author_matches 两个列表中的元素一一配对,然后遍历它们并输出结果。</p> <p>需要注意的是,正则表达式只适用于简单的 XML 文档和嵌套层次不深的情况。对于复杂的 XML 文档和深层次的嵌套,建议使用专门的 XML 解析库,例如 Python 自带的 xml.etree.ElementTree 模块或第三方库 lxml。</p> </div> <div class=""> <p><strong>相关文章</strong></p> </div> </article> </div> </main> <footer> <div class="container"> <p> <span>友情链接:</span> <a href="https://www.688576.com" target="_blank">雨伦博客</a>   <a href="https://www.yaanbbs.net" target="_blank">雅安论坛</a> </p> <a href="https://beian.miit.gov.cn" target="_blank">京ICP备15023317号-6</a> </div> </footer> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?30b42218aa13759c43de5f1971d0a93b"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>