代码之家  ›  专栏  ›  技术社区  ›  Ram Rachum

python:将HTML片段分隔为段落

  •  3
  • Ram Rachum  · 技术社区  · 14 年前

    我有一个包含段落的HTML片段。(我的意思是 p 标记。)我想将字符串拆分为不同的段落。例如:

    '''
    <p class="my_class">Hello!</p>
    <p>What's up?</p>
    <p style="whatever: whatever;">Goodbye!</p>
    '''
    

    应该成为:

    ['<p class="my_class">Hello!</p>',
     '<p>What's up?</p>'
     '<p style="whatever: whatever;">Goodbye!</p>']
    

    有什么好方法可以解决这个问题?

    4 回复  |  直到 14 年前
        1
  •  5
  •   Crast    14 年前

    如果字符串只包含段落,则可以使用精心设计的regex和 re.split() . 但是,如果字符串是更复杂的HTML,或者不总是有效的HTML,那么您可能需要查看 BeautifulSoup 包裹。

    用法如下:

    from BeautifulSoup import BeautifulSoup 
    
    soup = BeautifulSoup(some_html)
    
    paragraphs = list(unicode(x) for x in soup.findAll('p'))
    
        2
  •  2
  •   Mike Graham    14 年前

    使用 lxml.html 将HTML解析为所需的表单。这基本上是和推荐美汤的人一样的建议,除了 lxml 仍在积极发展,Beatifulsoup发展放缓。

        3
  •  0
  •   LukáÅ¡ Lalinský    14 年前

    使用 BeautifulSoup 解析HTML并迭代段落。

        4
  •  0
  •   dubiousjim    14 年前

    xml.etree(std lib)或lxml.etree(enhanced)使这项工作变得容易,但我不想得到这个答案,因为我不记得确切的语法。我总是把它和类似的包裹混在一起,每次都要重新查一次。