-1

この質問をする方法が正確にはわかりませんが、ここに行きます。

空のリストがあります

リスト内のリストに要素を追加したい。

したがって、私の場合、Apache.conf を調べて、ServerAlias を含む行を探しています。

それが見つかったら、その行をサブリストの最後の要素に追加したいと思います。それで....

[['ServerAlias test.com']]

特定の仮想ホストに別のエントリが見つかった場合、その項目を同じサブリストに追加します。

[['ServerAlias test.com','ServerAlias neww.com']]

次回新しい vhost を通過するとき。このリストの最後にリストを追加して、最初からやり直したいです。等々...

[['ServerAlias test.com','ServerAlias neww.com'],['ServerAlias cranberry.com']]

私はこれを説明する恐ろしい仕事をしたことを知っています.

これが私の非動作コードですので、参考になるかもしれません。

def buildvars(fileoutput):
import time
import re
servername=[]
docroot=[]
serveralias=[[]]
vhostdata={}
invhost=0
for line in fileoutput.split('\n'):
    if line == '' or re.search('^#',line) or re.search('^\s+#',line):  #delete blank lines... I dont care about them
        pass
    else: 
        if re.search('^\s*\<VirtualHost', line): #check if we are in a vhost
            invhost=1  #mark that we are in a vhost
            aliascounter=0 
        elif re.search('^\s*\</VirtualHost', line):
            invhost=0
            if aliascounter==0:
                serveralias.append('None') 
        if invhost == 1:
            if re.search('^\s*ServerName.*$',line):  #if we are in a vhost, check if the line contains servername
                servername.append(line.strip())  #then append it to the vhosts list
            if re.search('^\s*DocumentRoot.*$',line):
                docroot.append(line.strip())
            if re.search('^\s*ServerAlias.*$',line):
                if not serveralias: 
                    serveralias[0[0]].append(line.strip())
                else:
                    serveralias[-1[0]].append(line.strip())
                    aliascounter+=1

誰かが私が話していることを知っていることを願っています。メリークリスマス!

4

1 に答える 1

1

serveralias[0[0]]あなたが望む表現ではありません。これは、「の 0 番目の項目0を取得し、それをキーとして使用して値を取得する」ことを意味しますserveralias。0 はインデックス付けできないため、Python がその式を評価しようとするTypeErrorたびに が返されます。

リストの 0 番目の項目の 0 番目の項目を実際に取りたい場合は、その式を に置き換えますserveralias[0][0]。しかし、あなたはそれをしたくさえありません。の0番目のアイテムに追加したいだけですserveralias

serveralias[0[0]].append(foo)したがって、serveralias[0].append(foo)、およびserveralias[-1[0]].append(foo)に置き換えserveralias[-1].append(foo)ます。

ただし、コードに他の問題があるかどうかはわかりませんが、注意深く見ていませんでした。

于 2012-12-25T21:39:09.440 に答える