-1

如果有 4 个项目,我正在尝试打印行 [4],如果有 4 个以上的项目,我正在尝试打印行 [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] 中。如果我将这些行复制到单独的文本中并在没有 if else 的情况下执行它并且只是

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

您可以使用 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]

这假设您总是至少有四个项目!

于 2012-06-22T17:37:14.137 回答
1

你应该使用if len(lines)> 4

于 2012-06-22T17:41:38.553 回答