2012-09-07 38 views
0

好吧......這是一個謎給我 下面的代碼打印:Python字符串分割神祕IndexError

['03:20:01', 'PM', '262144', '16176136', '98.41', '547744', '11459404', '2096128', '312', '0.01', '0'] 
['12:30:01', 'PM', '261748', '16176532', '98.41', '547600', '11459084', '2096128', '312', '0.01', '0'] 
['10:50:11', 'PM', '257516', '16180764', '98.43', '548064', '11460312', '2096128', '312', '0.01', '0'] 

但是當我嘗試打印C [2]它給了我:

IndexError: list index out of range 

我錯過了什麼?

的代碼看起來非常簡單

cmd = 'sar -r -f /xactly/apps/sar/sjcxtlycomp22s/sa05 |sort -g -k4' 
high = subprocess.Popen([cmd], 
     stdin=subprocess.PIPE, 
     stdout=subprocess.PIPE, 
     stderr=subprocess.PIPE, 
     shell=True) 

memuse = False 
count = 0 

sep = re.compile('[\s]+') 
for line in high.stdout: 
    if line: 
     line = line.strip() 
     count += 1 
     c = sep.split(line) 
     print c 
+0

你可以請加'LEN(C)'在另外到'打印',讓我們知道你看到了什麼? – GodMan

+0

你在哪裏放置'print c [2]'語句? (另外,這不是你的問題,你知道're'在這裏是過度的,因爲字符串有一個'.split()'方法默認情況下在空白處分割?) – geoffspear

+1

@ Wooble,它非常明顯在c = sep.split(line)'後打印'c [2]'的代碼和錯誤。否則,索引錯誤不會知道「c」是一個列表。另外,如果他在循環後打印它,c的最後一個值(這將是一個列表)將被保留。 – GodMan

回答

0

我需要跳過第一三行數據,以便我修改了它:

sep = re.compile('[\s]+') 
    for line in high.stdout: 
     if line: 
      line = line.strip() 
      count += 1 
      if count > 3: 
       c = sep.split(line) 
       print c[4] 
+0

如果解決了您的問題,請接受您自己的答案,以便我們繼續前進。 –

+0

不幸的是我不得不等待兩天:( –