在python 2.7中,如何将行与列表中的项目数进行比较?

时间:2012-06-22 17:33:18

标签: python loops if-statement python-2.7

如果有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)

我不确定我想要放在哪里,如果行&gt; [4]。我总是得到IndexError: list index out of range。我已经仔细检查了,我想要的信息将在[4]或[5]中。如果我将这些行复制到单独的文本中,并且不使用if else而只执行

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

然后它起作用(在5行上)。

3 个答案:

答案 0 :(得分: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的内置函数documentation

答案 1 :(得分:1)

您可以使用len(行)或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]

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

答案 2 :(得分:1)

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