0

私は最近、HTML の生成に使用することを目的としたファイルを受け取りました。これは一種のメニュー テンプレートであり、時間の制約により、Python プロトタイプが機能するようになりましたが、それは総当たりであり、この場合にのみ機能します。

これを行うためのより良い方法が必要であることはわかっていますが、Google 検索は役に立ちませんでした。テンプレートファイルは次のようになります

[text](link)
[text](link)
>[text](link)
>[text](link) 
>>[text](link)
>>[text](link)
>>[text](link)
[text](link)
>[text](link)

私はこれをこの構造に力ずくで強制することができました(XDのどこかに]または[が欠けていないことを願っています)

[
    [ [text](link), [] ],
    [ [text](link), [
        [ [text](link), [] ],
        [ [text](link), [
            [ [text](link), [] ],
            [ [text](link), [] ],
            [ [text](link), [] ], 
        ] ],
    ],
    [ [text](link), [
        [ [text](link), [] ],
    ] ],
]

しかし、私は基本的に、ルート、親を追跡し、行の先頭にある ""、">"、または ">>" をチェックし、[ text, [] ] をベースに追加することでこれを行いました", root は ">"、root[parent] は ">>" です。問題は、 N*>について解決したいことですが、どのように進めればよいか、何を検索すればよいかさえわかりません。Python では、答えはどの言語にもある可能性があります。

menu = []
f = open('template_file', 'r')
root = 0
parent = 0
for line in f:
    line = line.strip()
    m = re.match('(.*)(\[.*)', line)
    if m:
        prefix = m.group(1)
        link = m.group(2)
        if prefix == "":
            menu.append([link, []])
            root += 1
            parent = 0
        elif prefix == ">":
            menu[root - 1][1].append([link, []])
            parent += 1
        elif prefix == ">>":
            menu[root - 1][1][parent - 1][1].append([link, []])

これは機能しますが、ひどいように見えます。必要な HTML を吐き出すことができるように、これらのテンプレート ファイルをこれらの構造に解析するためのより良い方法を見つけるために、何を検索すればよいかわかりません。今後のトラブルを未然に防ぎたい。

とても有難い。

4

1 に答える 1

0

各 ">" をタブに置き換えます。出力は、ブルートフォース出力とほ​​ぼ同じです。(file.txt は上記のテンプレート ファイルです)

test = open("file.txt", "r")

for line in test:
    print line.replace(">", "\t")
    #print line
于 2013-06-14T18:33:34.757 に答える