Python 2.7 请在下面的节目中指出我的错误
在这里,我尝试从特定站点提取黑名单IP列表,并尝试制作包含以下字段的excel表格: IP,日期。。。。。。新的更新代码是:Python 2.7 请在下面的节目中指出我的错误,python-2.7,xlwt,Python 2.7,Xlwt,在这里,我尝试从特定站点提取黑名单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() she
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()
我相信应该是这样的,尽管我的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')
理由是,我认为每次编写值时都应该更改列,因为这似乎是导致当前错误的原因。我还认为,您应该在每一行之后更改行,而不仅仅是在代码的末尾,这样做似乎是多余的
[在用户反馈后编辑更新]您运行代码了吗?如果是,会发生什么?何时何地出错?您会收到什么错误消息?您尝试了什么来修复出现的错误?你得到输出了吗?如果输出错误,预期的输出是什么?错误是:回溯(最近一次调用):文件“C:\Python27\blacklist.py”,第23行,在sheet.write(行,列,w[x])索引器:列表索引超出范围您尝试过
sheet.write(行,列,w[i])吗
?不知道为什么在使用i时要创建一个额外的x值,而不是重复使用w[i]时得到的wordError(Traceback(最近一次调用):文件“C:\Python27\blacklist.py”,第23行,在sheet.write(row,col,w[i])中;文件“C:\Python27\lib\site packages\xlwt\Worksheet.py”,第1030行,在write self.row(r.write)中(c,标签,样式)文件“c:\Python27\lib\site packages\xlwt\Row.py”,第240行,写入StrCell(self.\uu idx,col,style\u index,self.\uu parent\u wb.add\u str(标签))文件“c:\Python27\lib\site packages\xlwt\Row.py”,第159行,插入单元格引发异常(msg)异常:尝试覆盖单元格:sheetname=u'Blacklist IP'rowx=1 colx=8read。Stackoverflow不是一个调试服务。是的,您是对的,但仍然得到此回溯(最近一次调用):文件“C:\Python27\Blacklist.py”,第24行,在sheet.write(行,列,w[i])文件“C:\Python27\lib\site packages\xlwt\Worksheet.py”,第1030行,在write-self.row(r).write(c,label,style)文件“c:\Python27\lib\site-packages\xlwt\row.py”中,第235行,在write-self.\uu-adjust\u-bound\u-col\u-idx(col)文件“c:\Python27\lib\site-packages\xlwt\row.py”中,第78行,在调整\uu-col-idx-raise-ValueError中(“列索引(%r)不是范围(256)”内的整数%arg)ValueError:列索引(256)不是范围(256)中的整数这是因为您的拆分字符串长度超过256个字符,我猜xlwt只能处理256列,如果您达到该限制,是否会导致问题转移到另一行?如果您不介意另一行,请检查更新的代码。但是,如果由于新行或因为您达到256行,则可能会导致问题关于xlwt限制的更多详细信息:只有5列,请查看链接以获得更好的视图