0

私はpythonが初めてです。Pythonスクリプト「html.xml」への入力として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 ']

上記の配列から、いくつかのタグをランダムに選択して、次のようなツリーを作成したい: (例) 子ノード「a」と「option」を持つルート ノード「abbr」

子ノード「video」および「title」を持つ「a」

子ノード「output」と「source」を持つ「option」……

基本的にツリーから、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 を使用できます。

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 に答える