-1

アイテムが4つある場合はline[4]を、4つ以上ある場合はline[4]と[5]を印刷しようとしています。

def onlinedoc(test):
    for line in test:
        lines = line.split()
        if 'report' in lines:
            if lines > [4]:      #<---- this is where i need help
                doc = lines[4] + lines[5]
            else:
                doc = lines[4]
    return doc

if __name__ == '__main__':
    test = open('test_documentation.txt', 'r')
    print
    onlinedoc(test)

行>[4]の場合、私が持っている場所に何を置くべきかわかりません。私はいつも得るIndexError: list index out of range。再確認しましたが、必要な情報は[4]または[5]のいずれかになります。行を別のテキストにコピーして、ifelseなしで実行すると

if 'report' in lines:
    host = lines[4] + lines[5]

その後、動作します(5の行で)。

4

3 に答える 3

2

使用len

def onlinedoc(test):
    for line in test:
        lines = line.split()
        if 'report' in lines:
            if len(lines) > 4:
                doc = lines[4] + lines[5]
            else:
                doc = lines[4]
    return doc

組み込み関数に関するPythonのドキュメントを読む必要があります

于 2012-06-22T17:38:32.577 に答える
1

あなたが使用する必要がありますif len(lines)> 4

于 2012-06-22T17:41:38.553 に答える
1

len(lines)またはtry/exceptを使用できます

if 'report' in lines:
    if len(lines) > 4:
        doc = lines[4] + lines[5]
    else:
        doc = lines[4]

または試して/除外

if 'report' in lines:
    try:
        doc = lines[4] + lines[5]
    except IndexError:
        doc = lines[4]

これは、常に少なくとも4つのアイテムがあることを前提としています。

于 2012-06-22T17:37:14.137 に答える