当前位置:首页 > 生活百科

python部落冲突脚本(python爬虫教程)

栏目:生活百科日期:2024-12-17浏览:0

各种数据需要导入Excel?多个Excel要合并?目前,Python处理Excel文件有很多库,openpyxl算是其中功能和性能做的比较好的一个。接下来我将为大家介绍各种Excel操作。

打开Excel文件

新建一个Excel文件

 &>&>&> from openpyxl import Workbook
&>&>&> wb = Workbook

打开现有Excel文件

 &>&>&> from openpyxl import load_workbook
&>&>&> wb2 = load_workbook('test.xlsx')

打开大文件时,根据需求使用只读或只写模式减少内存消耗。

wb = load_workbook(filename='large_file.xlsx', read_only=True)
wb = Workbook(write_only=True)

获取、创建工作表

获取当前活动工作表:

 &>&>&> ws = wb.active

创建新的工作表:

 &>&>&> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
# or
&>&>&> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
# or
&>&>&> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

使用工作表名字获取工作表:

 &>&>&> ws3 = wb&["New Title"]

获取所有的工作表名称:

 &>&>&> print(wb.sheetnames)
&['Sheet2', 'New Title', 'Sheet1']
使用for循环遍历所有的工作表:
&>&>&> for sheet in wb:
... print(sheet.title)

保存

保存到流中在网络中使用:

 &>&>&> from tempfile import NamedTemporaryFile
&>&>&> from openpyxl import Workbook
&>&>&> wb = Workbook&>&>&> with NamedTemporaryFile as tmp:
wb.save(tmp.name)tmp.seek(0)
stream = tmp.read保存到文件:&>&>&> wb = Workbook&>&>&> wb.save('balances.xlsx')
保存为模板:&>&>&> wb = load_workbook('document.xlsx')
&>&>&> wb.template = True
&>&>&> wb.save('document_template.xltx')

单元格

单元格位置作为工作表的键直接读取:

 &>&>&> c = ws&['A4']

为单元格赋值:

 &>&>&> ws&['A4'] = 4
&>&>&> c.value = 'hello, world'

多个单元格可以使用切片访问单元格区域:

 &>&>&> cell_range = ws&['A1':'C2']

使用数值格式:

 &>&>&> # set date using a Python datetime
&>&>&> ws&['A1'] = datetime.datetime(2010, 7, 21)
&>&>&>&>&>&> ws&['A1'].number_format
'yyyy-mm-dd h:mm:ss'

使用公式:

 &>&>&> # add a simple formula
&>&>&> ws&["A1"] = "=SUM(1, 1)"

合并单元格时,除左上角单元格外,所有单元格都将从工作表中删除:

 &>&>&> ws.merge_cells('A2:D2')
&>&>&> ws.unmerge_cells('A2:D2')
&>&>&>&>&>&> # or equivalently
&>&>&> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
&>&>&> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

行、列

可以单独指定行、列、或者行列的范围:

 &>&>&> colC = ws&['C']
&>&>&> col_range = ws&['C:D']
&>&>&> row10 = ws&[10]
&>&>&> row_range = ws&[5:10]

可以使用Worksheet.iter_rows方法遍历行:

 &>&>&> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
... for cell in row:... print(cell)&<Cell Sheet1.A1&>
&<Cell Sheet1.B1&>
&<Cell Sheet1.C1&>
&<Cell Sheet1.A2&>
&<Cell Sheet1.B2&>
&<Cell Sheet1.C2&>

同样的Worksheet.iter_cols方法将遍历列:

 &>&>&> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
... for cell in col:... print(cell)&<Cell Sheet1.A1&>
&<Cell Sheet1.A2&>
&<Cell Sheet1.B1&>
&<Cell Sheet1.B2&>
&<Cell Sheet1.C1&>
&<Cell Sheet1.C2&>

遍历文件的所有行或列,可以使用Worksheet.rows属性:

 &>&>&> ws = wb.active
&>&>&> ws&['C9'] = 'hello world'&>&>&> tuple(ws.rows)((&<Cell Sheet.A1&>, &<Cell Sheet.B1&>, &<Cell Sheet.C1&>),
(&<Cell Sheet.A2&>, &<Cell Sheet.B2&>, &<Cell Sheet.C2&>),
(&<Cell Sheet.A3&>, &<Cell Sheet.B3&>, &<Cell Sheet.C3&>),
(&<Cell Sheet.A4&>, &<Cell Sheet.B4&>, &<Cell Sheet.C4&>),
(&<Cell Sheet.A5&>, &<Cell Sheet.B5&>, &<Cell Sheet.C5&>),
(&<Cell Sheet.A6&>, &<Cell Sheet.B6&>, &<Cell Sheet.C6&>),
(&<Cell Sheet.A7&>, &<Cell Sheet.B7&>, &<Cell Sheet.C7&>),
(&<Cell Sheet.A8&>, &<Cell Sheet.B8&>, &<Cell Sheet.C8&>),
(&<Cell Sheet.A9&>, &<Cell Sheet.B9&>, &<Cell Sheet.C9&>))

Worksheet.columns属性:

 &>&>&> tuple(ws.columns)
((&<Cell Sheet.A1&>,
&<Cell Sheet.A2&>,
&<Cell Sheet.A3&>,
&<Cell Sheet.A4&>,
&<Cell Sheet.A5&>,
&<Cell Sheet.A6&>,
...&<Cell Sheet.B7&>,
&<Cell Sheet.B8&>,
&<Cell Sheet.B9&>),
(&<Cell Sheet.C1&>,
&<Cell Sheet.C2&>,
&<Cell Sheet.C3&>,
&<Cell Sheet.C4&>,
&<Cell Sheet.C5&>,
&<Cell Sheet.C6&>,
&<Cell Sheet.C7&>,
&<Cell Sheet.C8&>,
&<Cell Sheet.C9&>))

使用Worksheet.append或者迭代使用Worksheet.cell新增一行数据:

 &>&>&> for row in range(1, 40):
... ws1.append(range(600))
&>&>&> for row in range(10, 20):
... for col in range(27, 54):
... _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

插入操作比较麻烦。可以使用Worksheet.insert_rows插入一行或几行:

 &>&>&> from openpyxl.utils import get_column_letter
&>&>&> ws.insert_rows(7)
&>&>&> row7 = ws&[7]
&>&>&> for col in range(27, 54):
... _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))

Worksheet.insert_cols操作类似。Worksheet.delete_rowsWorksheet.delete_cols用来批量删除行和列。

只读取值

使用Worksheet.values属性遍历工作表中的所有行,但只返回单元格值:

 for row in ws.values:
for value in row:
print(value)

Worksheet.iter_rowsWorksheet.iter_cols可以设置values_only参数来仅返回单元格的值:

 &>&>&> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
... print(row)(None, None, None)
(None, None, None)

作者:Sinchard,主攻Python库文档翻译,开发代码片段,源码分析

Blog:zhihu.com/people/aiApple

“python部落冲突脚本(python爬虫教程)” 的相关文章

wps工具栏不见了怎么弄(wps找不到设计功能)

WPS2019在使用的时候,状态栏可以随时显示我们操作的状态,可以开启或者关闭,下面就告诉大家,WPS2019文字怎么关闭/开启状态栏?WPS2019开启/关闭...

做电商运营的需要学哪些东西(学做电商需要的条件)

有很多朋友想从小白或者零基础入行来做网络营销,想成为网络运营这方面的专业人员,并且想找一份专业的工作,所以就比较好奇网络营销或者是网络运营到底应该是学什么样的内...

3g技术的三大主流技术标准(全方面了解3g技术)

一.3G通信技术  3G是第三代移动通信及其技术的简称,其主流标准包括:WCDMA、CDMA2000和TD-SCDMA。WCDMA(WidebandCDMA,宽...

悟空理财收益怎么样,盘点其实际收益率及取现方法

银行的收益率不高,一些人对理财产生了兴趣,也有一些人在似懂的情况下进入到理财的领域,更有一些人干脆跟着别人学,别人怎么办他就怎么办,网上有一款理财产品——悟空理...

可移动空调哪个牌子好(口碑最好的移动空调)

移动式空调是一种突破传统设计理念,体形娇些、高能效比、低噪音、无需安装,下面我们就来看一下移动式空调效果怎么样,移动式空调品牌推荐。移动式空调效果怎么样关于移动...

array负载均衡配置(四层和七层负载均衡的区别)

一、简介**所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡;**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均...

windows邮件服务器搭建(搭建邮件服务器的方法)

邮箱对每一个企业来说都是一个必不可少的,往往我们需要一个属于自己的域名后缀的邮箱作为标识。文章我们会介绍从零开始如何搭建一个属于自己的简易邮箱系统。这个邮箱系...

三星s8多少钱一部(三星s8的上市时间及价格)

北京时间5月18日20:00,三星在北京古北水镇正式召开三星GalaxyS8及S8+产品的中国发布会。三星GalaxyS8/S8+采用全视曲面屏和无边框视觉的设...

怎么搞网络赚钱,正规的网络赚钱方法

关于网络赚钱的项目,网上有很多。随着发展,或许等你知道的时候市场已经饱和,原先能够赚钱的项目也许已经落后,没有剩下多少利润空间了。要想快人一步赚钱,就不能跟随别...

java开发简历项目经验怎么写(java中取绝对值方法)

这一期真的是干货中的干活了。都是将我几年来总结的简历经验分享给大家,就是为了给大家一个真实的理解过程。最后,附录了我简化后的简历。(简化前的简历,请参照我上篇文...