用正则表达式在Python中解析XML

这个问题在这里已经有了答案:

  • RegEx匹配除XHTML自包含标签之外的开放标签35个答案

  • 你通常不想使用re.match 。 从文档引用:

    如果您想在字符串中的任何位置找到匹配项,请改用search()(另请参阅search()与match())。

    注意:

    >>> print re.match('>.*<', line)
    None
    >>> print re.search('>.*<', line)
    <_sre.SRE_Match object at 0x10f666238>
    >>> print re.search('>.*<', line).group(0)
    >PLAINSBORO, NJ 08536-1906<
    

    另外,为什么使用正则表达式解析XML时,你可以使用像BeautifulSoup :)。

    >>> from bs4 import BeautifulSoup as BS
    >>> line='<City_State>PLAINSBORO, NJ 08536-1906</City_State>'
    >>> soup = BS(line)
    >>> print soup.find('city_state').text
    PLAINSBORO, NJ 08536-1906
    

    请使用像ElementTree这样的XML解析器

    >>> from xml.etree import ElementTree as ET
    >>> line='<City_State>PLAINSBORO, NJ 08536-1906</City_State>'
    >>> ET.fromstring(line).text
    'PLAINSBORO, NJ 08536-1906'
    

    仅当模式匹配整个字符串时,re.match才会返回匹配项。 要查找匹配模式的子字符串,请使用re.search。

    是的,这是解析XML的简单方法,但我强烈建议您使用专门为此任务设计的库。

    链接地址: http://www.djcxy.com/p/76845.html

    上一篇: Parsing XML in Python with regex

    下一篇: Writing regular expression in PHP to wrap <img> with <a>