2016-04-08 43 views
-2

這裏中號試圖從一個特定的網站提取黑名單IP列表,並試圖進行以下領域的Excel工作表: IP,日期......新更新代碼:請指出我的錯誤在下面的程序

import xlwt 
import urllib 

def Bl(): 
    link = 'https://www.dshield.org/ipsascii.html?limit=100' 
    p = urllib.urlopen(link) 
    text = p.readlines() 


    wbk = xlwt.Workbook() 
    sheet = wbk.add_sheet('python') 
    sheet.write(0,0,'Blacklist IP') 
    sheet.write(0,1,'Reports') 
    sheet.write(0,2,'abcd') 
    sheet.write(0,3,'date') 
    sheet.write(0,4,'Date') 

    row = 1 #counter for rows. 
    col = 0 #counter for columns. 
    x = 0 #counter for printing the n'th element in the string w. 

    for line in text: 
     li = line.strip() 
     w = line.split() 


     if not li.startswith("#"): 
      sheet.write(row,col,w[0]) 
      sheet.write(row,1,w[1]) 
      sheet.write(row,2,w[2]) 
      sheet.write(row,3,w[3]) 
      sheet.write(row,4,w[4]) 
      row = row + 1 

    wbk.save('new.xls') 

Bl() 
+0

你已經跑代碼[用戶反饋後編輯更新]會出現多餘的

代碼的結束?如果是這樣,會發生什麼?何時何地錯誤?你得到什麼錯誤信息?你有什麼試圖解決出現的錯誤?你有輸出嗎?如果這是錯誤的輸出,預期輸出是什麼? – Draken

+0

錯誤是:追溯(最近呼叫最後): 文件「C:\ Python27 \ blacklist.py」,第23行,在 sheet.write(row,col,w [x]) IndexError:list index out的範圍 – Tejas

+0

你試過'sheet.write(row,col,w [i])'而不是?不知道爲什麼你使用i時創建一個額外的x值而不是遍歷整個單詞 – Draken

回答

0

我相信這應該是這一點,雖然我的Python是不是很大:

import xlwt 
import urllib 

link = 'https://www.dshield.org/ipsascii.html?limit=100' 
p = urllib.urlopen(link) 
text = p.readlines() 


wbk = xlwt.Workbook() 
sheet = wbk.add_sheet('Blacklist IP') 

row = 1 #counter for rows. 
col = 0 #counter for columns. 
#x = 0 #counter for printing the n'th element in the string w. 

for line in text: 
    li = line.strip() 
    w = line.split() 
    print "The line " + line + " was split into " + len(w) + " size" 

    for i in range(0,len(w)-1): 
     if not li.startswith("#") and not li.isspace(): 
      sheet.write(row,col,w[i]) 
      #x = x + 1  
      col = col + 1 
      if col > 256: 
       print "Line of " + li 
       print "Row: " + row 
       print "Col: " + col 
       raise ValueError('Too many columns, can\'t insert ' + w) 

    row = row + 1 

wbk.save('new.xls') 

的理由是,我相信你應該你寫的每一個值時更改列,因爲這似乎是導致你目前的錯誤。我也相信你應該在每行後會改變行,而不僅僅是然後

+0

是的你是對的,但仍然得到這個回溯(最近呼叫最後): 文件「C:\ Python27 \ blacklist.py」,第24行,在 sheet.write(row,col,w [i]) 文件 「C:\ Python27 \ LIB \站點包\ xlwt \ Worksheet.py」,線1030,在寫 self.row(R).WRITE(C,標籤,樣式) 文件「C:\ Python27 \ lib \ site-packages \ xlwt \ Row.py「,第235行,寫入 self .__ adjust_bound_col_idx(col) 文件」C:\ Python27 \ lib \ site-packages \ xlwt \ Row.py「 __adjust_bound_col_idx 提高ValueError異常( 「列索引(%R)不在範圍內的int(256)」 %ARG) ValueError異常:列索引(256)不在範圍內(256) – Tejas

+0

這是因爲你的分割字符串的長度超過一個int 256個字符,我猜測xlwt只能處理256列,如果達到這個限制,會不會導致問題轉移到另一行? – Draken

+0

如果您不介意另一行,請檢查更新的代碼。雖然可能會導致問題區分,如果它移動了一行,由於一個新的行或因爲您達到256列的限制 – Draken

相關問題