从网上爬取的数据很多都需要写入excel表或者数据库保存起来,这里就给大家简单讲解下如何运用python中的lxwt模块将数据写入excel表中。
# 导入lxwt模块,还没安装的直接在终端输入pip install lxwt即可。
import lxwt
# 新建一个excel文件
file = xlwt.Workbook() # 注意这里的Workbook首字母是大写
# 新建一个sheet,这里是新建excel工作表,如果数据循环写入一定不要把这行代码写入循环之内,不然会只写入最后一个数据,切记。
table = file.add_sheet('sheet name')
# 写入数据table.write(行,列,value)
table.write(0,0,'test')# 循环写入,直接循环这三个数字就可以了(行、列、数据)
# 如果对一个单元格重复操作,会引发下面错误。
returns error:
# Exception: Attempt to overwrite cell:
# sheetname=u'sheet 1' rowx=0 colx=0
# 所以在打开时加cell_overwrite_ok=True 解决
table = file.add_sheet('sheet name',cell_overwrite_ok=True )
file.save('demo.xls') # 保存文件,保存该excel文件,有同名文件时直接覆盖
到此数据就能写入excel中了,下面在介绍一些其他操作。
使用style
style = xlwt.XFStyle() # 初始化样式
font = xlwt.Font() #为样式创建字体
font.name = 'Times New Roman'
font.bold = True
style.font = font #为样式设置字体
table.write(0, 0, 'some bold Times text', style) # 使用样式
xlwt 允许单元格或者整行地设置格式。还可以添加链接以及公式。可以阅读源代码,那里有例子:
dates.py, 展示如何设置不同的数据格式
hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)
merged.py, 展示如何合并格子
row_styles.py, 展示如何应用Style到整行格子中.
接下来给大家一个简单的例子:
import xlwt
# 指定file以utf-8的格式打开
file = xlwt.Workbook(encoding='utf-8')
# 指定打开的文件名
table = file.add_sheet('Sheet 1', cell_overwrite_ok=True)
info_list = [
['张三', '150', '120', '100'],
['李四', '90', '99', '95'],
['王五', '60', '66', '68'],
]
for i, p in enumerate(info_list):
# 将数据写入文件,i是enumerate()函数返回的序号数
for j, q in enumerate(p):
# print(i, j, q)
table.write(i, j, q)
file.save('data.xls')
大家在写入数据的过程中可能会存在每个人的数据类型可能都不一样,有的是列表数据,有的还是字典类型,不管什么类型的数据,大家一定要清楚table.write(I,J,Q )中的三个数据,分别对应练成表中的行,列还有要写入的数据,只要这三个序号搞清楚了就没问题了,还有要给大家提的就是enumerate(),
enumerate()函数:
enumerate()是python的内置函数,适用于python2.x和python3.x
enumerate在字典上是枚举、列举的意思
enumerate参数为可遍历/可迭代的对象(如列表,字符串)
enumerate多用于在对于循环中得到计数,利用它可以同时获得索引和值,即需要索引和值值的时候可以使用
同样给大家举个例子
list = [1,2,3,4,5,6]
for index,value in enumerate(list):
print (index,value)
结果如下:
0,1
1,2
2,3
3,4
4,5
5,6
index是enumerate()函数自己生成的计数,我们再向enumerate()函数后加一个参数,看看效果:
list = [1,2,3,4,5,6]
for index,value in enumerate(list,3):
print (index,value)
结果如下:
3,1
4,2
5,3
6,4
7,5
8,6
加一个参数就决定了从哪里开始索引。
好了lxwt模块,就介绍到这里了。本人也是一边学一边做笔记给大家分享,把自己遇到的问题分享一下,如有不周到之处,请见谅。