1 问题引入
今天实现恶意样本标签提取,用到了表格处理,下面进行整理。
python操作excel主要用到xlrd
和xlwt
这两个库,即xlrd
是读excel,xlwt
是写excel的库。这两个库使用pip进行安装。
2 Python写excel——xlwt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import xlwt
def export_excel(output_file): fields = ['姓名', '年龄'] book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('人员信息表') for col, field in enumerate(fields): sheet.write(0, col, field) info_list = [['Dragon', 18], ['Pig', 21], ['Cat', 22]] row = 1 for name, age in info_list: sheet.write(row, 0, name) sheet.write(row, 1, age) row += 1 book.save(output_file)
if __name__ == '__main__': output_file = "output.xls" export_excel(output_file)
|
表格信息如下:
3 Python读excel——xlrd
整体思路为,打开文件,选定表格,读取行列内容,读取表格内数据
详细代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import xlrd
def read_excel(input_file): wb = xlrd.open_workbook(filename=input_file) print(wb.sheet_names()) sheet1 = wb.sheet_by_index(0) sheet2 = wb.sheet_by_name('人员信息表') print(sheet1, sheet2)
print(sheet1.name, sheet1.nrows, sheet1.ncols) rows = sheet1.row_values(1) cols = sheet1.col_values(1) print(rows) print(cols) print(sheet1.cell(1, 0).value) print(sheet1.cell_value(1, 0)) print(sheet1.row(1)[0].value)
if __name__ == '__main__': input_file = "output.xls" read_excel(input_file)
|
4 xls和xlsx的异同
-
文件核心结构不同:
- xls核心结构是复合文档类型的;
- xlsx 的核心结构是 XML 类型的结构,并且基于XML进行压缩(占用空间更小),所以也可以看做zip文件,将一个“.xlsx”文件的后缀改为ZIP后,用解压软件解压,可以看到里面有一个xml文件和文件的主要内容。
-
版本不同:
- xls是excel2003及以前版本所生成的文件格式
- xlsx是excel2007及以后版本所生成的文件格式
- (excel 2007之后版本可以打开上述两种格式,但是excel2013只能打开xls格式)
进一步的详细解释参见:excel后缀.xls和.xlsx有什么区别
X 参考