Python 从标记之间提取文本的有效方法

Python 从标记之间提取文本的有效方法,python,regex,extract,Python,Regex,Extract,假设我有这样的东西: var = '<li> <a href="/...html">Energy</a> <ul> <li> <a href="/...html">Coal</a> </li> <li> <a href="/...html">Oil </a> </li> <li> <a h

假设我有这样的东西:

var = '<li> <a href="/...html">Energy</a>
      <ul>
      <li> <a href="/...html">Coal</a> </li>
      <li> <a href="/...html">Oil </a> </li>
      <li> <a href="/...html">Carbon</a> </li>
      <li> <a href="/...html">Oxygen</a> </li'
re.findall('(?<=>)([^<]+)(?=</a>[^<]*</li)', var, re.S)
var='

    • 从标记语言中提取信息的推荐方法是使用解析器,例如,这是一个不错的选择。对于这一点,它不是适合这项工作的工具

      如果您想使用正则表达式(有些人认为这是解析HTML/XML的罪过),可以尝试以下方法:

      var = '<li> <a href="/...html">Energy</a>
            <ul>
            <li> <a href="/...html">Coal</a> </li>
            <li> <a href="/...html">Oil </a> </li>
            <li> <a href="/...html">Carbon</a> </li>
            <li> <a href="/...html">Oxygen</a> </li'
      
      re.findall('(?<=>)([^<]+)(?=</a>[^<]*</li)', var, re.S)
      

      re.findall('(?)([^如果您只是在解析标记内部的内容之后,请尝试使用xpath,例如

      for text in var.xpath_all(".//ul/li"):
           text = li.xpath('.//a/text()')
           print text
      
      您还可以使用urllib、BeautifulSoup等。

      您可以使用它,它非常适合此类任务。它非常简单,易于安装,并且有大量文档

      您的示例中有一些未关闭的li标记。我已经进行了更正,这是获取所有li标记的方法

      from bs4 import BeautifulSoup
      
      var = '''<li> <a href="/...html">Energy</a></li>
          <ul>
          <li><a href="/...html">Coal</a></li>
          <li><a href="/...html">Oil </a></li>
          <li><a href="/...html">Carbon</a></li>
          <li><a href="/...html">Oxygen</a></li>'''
      
      soup = BeautifulSoup(var)
      
      for a in soup.find_all('a'):
        print a.string
      
      从bs4导入美化组
      var='''
      • '' 汤=美汤(var) 对于汤中的a。查找所有('a'): 打印字符串
      它将打印:

      能量
      辅酶A


      氧气


      有关文档和更多示例,请参见BeautifulSoup

      这不是故意使用的正确html吗?最后一个
      li
      标记没有关闭,您忘记了第一个标记中的关闭标记,并且像这样没有关闭
      ul
      标记…这是故意的吗?两个“最佳”和“最有效”都是非常模糊的术语…因此可能在行中属于,
      var.findall(text=True)