Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Html嵌套列表转换为Python';是一个_Python_Html_Html Lists - Fatal编程技术网

如何将Html嵌套列表转换为Python';是一个

如何将Html嵌套列表转换为Python';是一个,python,html,html-lists,Python,Html,Html Lists,我有这样的Html列表: lista = """ <ul> <li>Arts &amp; Entertainment <ul> <li>Celebrities &amp; Entertainment News</li> <li>Comics &amp; Animation <ul> <li>Anime &a

我有这样的Html列表:

lista = """
<ul>
<li>Arts &amp; Entertainment
    <ul>
      <li>Celebrities &amp; Entertainment News</li>
      <li>Comics &amp; Animation
        <ul>
        <li>Anime &amp; Manga</li>
        <li>Cartoons</li>
        <li>Comics</li>
        </ul>
      </li>
    </ul>
</li>
</ul>

"""
lista=”“”
  • 艺术及娱乐
    • 名人娱乐新闻
    • 漫画与动画
      • 动漫
      • 卡通片
      • 漫画
"""
我想将其转换为有用的python结构,以便进一步处理:


你建议什么结构?你会怎么做呢

您可以使用映射类型:Dictionaries

,我会这样做:

from BeautifulSoup import BeautifulSoup
from pprint import pprint

def parseList(tag):
    if tag.name == 'ul':
        return [parseList(item)
                for item in tag.findAll('li', recursive=False)]
    elif tag.name == 'li':
        if tag.ul is None:
            return tag.text
        else:
            return (tag.contents[0].string.strip(), parseList(tag.ul))

soup = BeautifulSoup(lista)
pprint(parseList(soup.ul))
示例输出:

[(u'Arts &amp; Entertainment',
  [u'Celebrities &amp; Entertainment News',
   (u'Comics &amp; Animation',
    [u'Anime &amp; Manga', u'Cartoons', u'Comics'])])]

请注意,对于包含未编号列表的列表项,返回一个元组,其中第一个元素是列表项中的字符串,第二个元素是包含未编号列表内容的列表。

您使用的是哪个html解析器?正如@jcollado所说的,我使用的是Beautiful Soup。我必须承认,我在处理它时遇到了一些问题。我想打印维护层次结构的整个列表。例如,使用不同的缩进打印它。。。