2012-06-22 70 views
-1

我想打印行[4]如果有4項,或行[4]和[5]如果有超過4項。在Python 2.7中,如何將行與列表中的項目數進行比較?

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 'report' in lines: 
    host = lines[4] + lines[5] 

那麼它的工作原理(上線與5)。

+0

這是很清楚你想要做什麼。我們不知道你的意思是「4線」 – Falmarri

+0

一行4項或一行5項拆分 – Mike

+1

它不是很不清楚。問題是你正試圖執行一個語法不正確的命令。看看len()函數,並重新評估if-expression中的條件,從而帶來問題 –

回答

1

你應該使用if len(lines)> 4

1

您可以使用LEN(系)或嘗試/除

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

使用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的內置函數

相關問題