0

我是 python 新手。我有 xml 文件作为我的 python 脚本“html.xml”的输入。我制作了一个包含 html 标签的数组:

from xml.etree import ElementTree
tree = ElementTree.parse("html.xml")
olp = tree.findall("//tag_Name")
mylist = [t.text for t in olp]
print mylist

输出是:

[' !--...-- ', ' !DOCTYPE ', ' a ', ' abbr ', ' acronym ', ' address ', ' applet
 ', ' area ', ' article ', ' aside ', ' audio ', ' b ', ' base ', ' basefont ',
' bdi ', ' bdo ', ' big ', ' blockquote ', ' body ', ' br ', ' button ', ' canva
s ', ' caption ', ' center ', ' cite ', ' code ', ' col ', ' colgroup ', ' comma
nd ', ' datalist ', ' dd ', ' del ', ' details ', ' dfn ', ' dialog ', ' dir ',
' div ', ' dl ', ' dt ', ' em ', ' embed ', ' fieldset ', ' figcaption ', ' figu
re ', ' font ', ' footer ', ' form ', ' frame ', ' frameset ', ' h1 to h6 ', ' h
ead ', ' header ', ' hgroup ', ' hr ', ' html ', ' i ', ' iframe ', ' img ', ' i
nput ', ' ins ', ' kbd ', ' keygen ', ' label ', ' legend ', ' li ', ' link ', '
 map ', ' mark ', ' menu ', ' meta ', ' meter ', ' nav ', ' noframes ', ' noscri
pt ', ' object ', ' ol ', ' optgroup ', ' option ', ' output ', ' p ', ' param '
, ' pre ', ' progress ', ' q ', ' rp ', ' rt ', ' ruby ', ' s ', ' samp ', ' scr
ipt ', ' section ', ' select ', ' small ', ' source ', ' span ', ' strike ', ' s
trong ', ' style ', ' sub ', ' summary ', ' sup ', ' table ', ' tbody ', ' td ',
 ' textarea ', ' tfoot ', ' th ', ' thead ', ' time ', ' title ', ' tr ', ' trac
k ', ' tt ', ' u ', ' ul ', ' var ', ' video ', ' wbr ']

从上面的数组中,我想随机选择一些标签并想要制作一棵树,例如:(例如)根节点 'abbr' 与子节点 'a' 和 'option'

'a' 与子节点 'video' 和 'title'

带有子节点“输出”和“源”的“选项”......

基本上从树中,我想生成html页面。

谁能告诉我我该怎么做?python中的代码应该是什么?我正在使用 python 2.7

4

3 回答 3

2

看看BeautifulSoup,它可能会做你想要的。文档非常好。

BeautifulSoup 也做 XML

如果您真的想要从该列表中伪随机选择标签(为什么?),那么您需要这样做:

import random

a_random_tag = random.choice(list_of_tags)
于 2013-03-10T18:59:17.177 回答
1

如果您有兴趣从解析的数据在 python 中创建树,您可以使用自动生存:

Autovivification 是许多涉及动态创建数据结构的编程语言的显着特征。

from collections import defaultdict

def tree():
    return defaultdict(tree)

lupin = tree()
lupin["express"][3] = "stand and deliver"

https://en.wikipedia.org/wiki/Autovivification

于 2013-03-10T19:38:58.763 回答
0

要从 python 中的 mylist 中随机选择标签,您可以执行此循环

import random

while len(mylist) > 0:
    idx = random.randint(1,len(mylist))-1
    tag = mylist[idx]

    # this next line is critical or the loop will never exit
    del mylist[idx]  # this removes it from the list


   ... do whatever you want with tag (add to your tree, create a new node, etc)...

还有其他方法,但这应该可以让您继续前进,您可以从那里优化它

于 2013-03-10T19:26:15.740 回答