Python库与Excel

目录

一、库

1、Python自带的库

2、第三方库

3、第三方库的安装

二、import的用法

三、datetime库

1、处理日期

2、处理时刻

3、局限性

四、random库

1、函数

2、随机种子

3、发牌模拟器

五、jieba库

六、openpyxl库

1、表格读取

2、表格元素遍历

3、工作表的拿取

4、单元格属性

5、读取公式的计算结果

6、创建一个excel文件

7、数据类型更改

8、指定单元格样式


Python是一个十分便利的编程语言,这是因为它包含了很多丰富的Python库和第三方库

一、库

Python的库包含两种,一个是Python自带的库,我们只需要在编程时,用import关键字调用即可,另外一种第三方的我们需要在命令行工具中进行下载

1、Python自带的库

Python有很多丰富的库,比如math(进行一些基本的数学运算),re(正则表达式),datetime(处理时间和日期),turtle(绘图),random(生成随机数,或选择随机的元素)

这一类的库,我们只需要用import关键字调用即可:

python 复制代码
import math
import re 
import turtle
import datetime

2、第三方库

当然,我们在Python中还可以选择很多的第三方库,他们同样有着丰富的功能,让我们可以更轻松 的实现更多功能:

比如:Pillow(图像处理),jieba(中文的分词库),requests(发送各种HTTP请求),matplotlib(创建静态和动态,可交互的图标)

3、第三方库的安装

上面说到,我们如果要在Python中安装第三方库的话,我们需要在命令行工具中安装,下面是详细的步骤:

①进入cmd窗口

我们按下win + R键,输入cmd,进入命令窗口

②我们在命令窗口使用pip install 库名(我们用jieba库举例),进行安装:

安装中:

安装完成后,会有类似的显示:

(警告是说pip版本过旧,如果是新版本就不会弹出这个警告)

二、import的用法

我们在Python中,除了能直接用import来调用类,我们还可以结合as关键字,让我们在之后的代码调用中,更加简单方便的取去调用:

我们可以用import直接调用:

python 复制代码
import turtle

turtle.setup(100,200)
turtle.fd(10)

当然,有时这个类名可能太长太复杂,我们可以结合as关键字,让他更简单:

python 复制代码
import turtle as tt

tt.setup(100,200)
tt.fd(10)

我们可以用import来导入类中类,比如(PIL库中的Image类)

有两种方法:

python 复制代码
import PIL.Image

from PIL import Image

当然,我们也可以同时在一个库中调用很多个类:

比如我们要用第三方的库来创建一个Excel表格,我们就需要调用多个类:

python 复制代码
from openpyxl.styles import Font,Alignment      #可一次性调用多个类
from openpyxl.workbook import Workbook

wb = Workbook()     #创建一个新的,空的工作簿
wsheet = wb.active  #获取工作簿中活动的工作表对象,这一步和数据库的cur获取光标很像

boldFont = Font (size = 18 , name = 'Times New Roman' , bold = True , color = "0000FF")
#设置字体大小是18磅,字体名称,是否加粗,字体颜色
alignment = Alignment(horizontal = 'left' , vertical = 'center')
#水平方向上左对齐,垂直方向上居中对其

wsheet["A1"] = "Sue"    #在第A列第1行的那个格子添加Sue这个内容
wsheet["A1"].font = boldFont     #把对字体的设置应用到A1这个格子
wsheet["A1"].alignment = alignment      #把文字位置同样也应用到A1这个位置

wb.save("example.xlsx")     #进行保存操作

我们在该py文件的当前目录下,就能找到这个表:

三、datetime库

1、处理日期

我们的datetime库中包含了很多丰富且使用的函数,比如我们可以处理日期,用日期来计算出你的年龄:

python 复制代码
import datetime

YourBirth = datetime.date(2004,8,22)    #创建了日期对象
print("你出生在星期" , YourBirth.weekday() + 1)   #0表示星期一

Nowtime = datetime.date.today()     #获取今天的时间
if YourBirth < Nowtime :
    Year = Nowtime - YourBirth
    print(Year.days)    #用天做基本单位输出

输出:

2、处理时刻

我们可以用datetime库来获取当前极为详细的时间,可精确到毫秒:

python 复制代码
import datetime

Nowtime = datetime.datetime.now()
print(Nowtime.year , Nowtime.month , Nowtime.day , Nowtime.hour , Nowtime.minute , Nowtime.second , Nowtime.microsecond)

输出:

我们也可以构造一个极其详细的时间:

python 复制代码
import datetime

Nowtime = datetime.datetime(2017 , 9 , 1 , 16 ,30 , 1 , 0)  
#构造具体的时间

print(Nowtime.strftime("%Y%m%d %H:%M:%S"))  #12小时制
print(Nowtime.strftime("%Y%m%d %I:%M:%S %p"))   #24小时制

它甚至能更改时间制:

输出:

3、局限性

当然,datetime也有一些局限性,它能处理的时间范围是公元1年~公元9999年

四、random库

1、函数

random中包含很多有意思的函数:

|-------------------------|----------------------------------|
| 函数 | 作用 |
| random.random() | 随机生成一个[0,1]之间的数 |
| random.uniform(x,y) | 随机生成一个[x,y]之间的数 |
| random.randint(x,y) | 随机生成一个[x,y]之间的整数,x和y都是整数 |
| random.randrange(x,y,z) | 在range(x,y,z)中随机取一个数字 |
| random.choice(x) | 从序列x中随机取一个元素,x可以是列表,元组,字符串 |
| random.shuffle(x) | 将列表x的元素顺序打乱 |
| random.sample(x,n) | 从序列中随机抽取一个长度是n的子序列,x可以是列表,元组,字符串 |
| random.seed(x) | 设置随机种子,x可以是一个数字,元组,字符串 |

因为是随机数,所以我们每次执行相同的代码之后可能不一样:

python 复制代码
import random

for i in range(1 , 5) :
    a = random.random()
    print(a)

输出:

2、随机种子

这个random虽然说是运算出一个随机数,但是在计算机中,计算机的程序本身是固定的,生成随机数的代码也是固定的,计算机只是会根据某一时刻变化的信息(比如时间)作为种子,来生成所谓的随机数,其实本质是伪随机数!

所以,如果我们在程序中指明了某一种子,我们每次运行它就不会得到不一样的结果了:

python 复制代码
import random

random.seed("ok")
a = random.random()
print(a)

输出:

①我们反复运行这个代码,会发现这个结果已经是固定的了

②这个种子可以是一个数字,也可以是字符串什么的

3、发牌模拟器

有了上面的基础,我们现在可以制作一个简单的发牌模拟器:

python 复制代码
import random

cards = [str(i) for i  in range(2,11)]  #生成一个列表,从2到10
cards.extend(list("JQKA"))  #在列表后面添加JQKA这些

allcards = []       #先生成一个空列表,里面准备装入所有的牌
for s in "♣♦♥♠" :       #双重for循环,先从四个花色中选一个,然后和上面那个列表里面的A到K去一一组合
    for c in cards :
        allcards.append(s+c)    #把两个相加,append可以把这个s+c看成一个成体添加进去,如果使用extend就会把两个元素分开
random.shuffle(allcards)    #打乱顺序

for i in range(4) :     #生成四名玩家
    oneplayer = allcards[i::4]      #每一个玩家从第i发个开始,每次隔四个取一张牌
    oneplayer.sort()    #分类以下
    print(oneplayer)  

输出:

(这里不包含大小王~~~~)

五、jieba库

jieba库是一个很实用的中文分词库,它可以把我们输入的文本根据对应的函数进行细致的分词:

jieba是一个第三方的库,我们需要用pip指令下载它

下面我们来看一个简单的例子:

python 复制代码
import jieba

s = "我们热爱中华人民共和国"
lst = jieba.lcut(s)
print(lst)

输出:

但是我们很快就想到一个问题,"中华人民共和国",中华,华人,人民,共和等等这些,都是中文词汇,但因为我们是默认的精确模式,这些词拼起来刚好可以拼成原文,我们当然也可以把所有的可能的分词都列举出来:

python 复制代码
import jieba

s = "我们热爱中华人民共和国"
lst = jieba.lcut(s , cut_all = True)
print(lst)

这样jieba库就能把所有的可能全部列举出来:

但是jieba库中的词有时也不是很全面,比如当我们输入一个比较新的词汇的时候,jieba库可能就会判断失误:

python 复制代码
import jieba

s = "拼多多是一个购物软件"
lst = jieba.lcut(s)
print(lst)

输出:

我们发现"拼多多"本应该是一个词,但是jieba把他分成了两个,这显然是不正确的,所以我们可以在代码中添加一些词汇:

python 复制代码
import jieba

s = "拼多多是一个购物软件"
jieba.add_word("拼多多")
lst = jieba.lcut(s)
print(lst)

输出:

如果我们需要添加的词汇很多,我们可以新建一个文档,在里面写入那些词,然后用下面这个代码调入他们:

python 复制代码
jieba.load_userdict("d:/tmp/dict.txt")

六、openpyxl库

openpyxl库是一个用于处理Excel表格的库,比如上面我们提到了如何用openpyxl库来创建,输入,更改样式,保存等操作

1、表格读取

在2010之前,我们会用xlrd和xlwt库对.xls文件进行读取和创建修改操作

在2010年之后,我们会用openpyxl库进行读写.xlsx文件

我们在上面介绍了如何去打开,写入一些东西在Excel表中,现在我们详细介绍一下如何读写

python 复制代码
import openpyxl as pxl

Excel = pxl.load_workbook("D:\学习\Python\example.xlsx")  #打开文件
sheet = Excel.worksheets[0]     #取第0个工作表
print(sheet.title)      #输出工作表名称
print(sheet.min_row , sheet.max_row)    #输出最小和最大的有效行号
print(sheet.min_column , sheet.max_column)    #输出最小和最大的有效列号

输出:

我们再看看那个Excel表格:

最下方的绿色字体sheet就是这个表格的名字,所以第一行输出了sheet

而因为这个表格中只有第一个格子有数值,所以最小,最大的行号,列号都是1

2、表格元素遍历

我们当然也可以用Python遍历输出每一个格子中的数值:

例子:

python 复制代码
import openpyxl as pxl

Excel = pxl.load_workbook("D:\学习\Python\example.xlsx")  #打开文件
sheet = Excel.worksheets[0]     #取第0个工作表
for row in sheet.rows :
    for cell in row :
        print(cell.value)

我们先在表格中输入一些数值:

运行,看看输出:

格子中没有数值的,就会返回None

3、工作表的拿取

除了上面代码中的方法外,我们还有下面两个:

python 复制代码
import openpyxl as pxl

Excel = pxl.load_workbook("D:\学习\Python\example.xlsx")  #打开文件
sheet = Excel.active    #打开活跃的工作表,(缺省就是第0个工作表)
sheettwo = Excel["name"]    #打开名字是name的工作表

4、单元格属性

我们的openpyxl中提供了很多可以查看单元格属性的函数:

我们可以查看每一个单元格的属性:

python 复制代码
import openpyxl as pxl

Excel = pxl.load_workbook("D:\学习\Python\example.xlsx")  #打开文件
sheet = Excel.active    #打开活跃的工作表,(缺省就是第0个工作表)\
for row in sheet.rows :
    for cell in row :
        a = type(cell.value)
        print(a)

输出:

5、读取公式的计算结果

有时我们Excel表中包含一些计算公式,如果用普通的遍历读取的方式,只能输出公式的式子,如果想得到公式计算的结果,我们可以通过在打开文件的时候,在后面添加data_only = True,来获取表格中公式的结果:

例子:

python 复制代码
import openpyxl

wb = openpyxl.load_workbook("D:\学习\Python\example.xlsx")    #没有data_only
sheet = wb["Sheet"]
cell_value = sheet["A4"].value
print(cell_value)
python 复制代码
import openpyxl

wb = openpyxl.load_workbook("D:\学习\Python\example.xlsx" , data_only = True)    #有data_only
sheet = wb["Sheet"]
cell_value = sheet["A4"].value
print(cell_value)

我们来看一下对应的输出:

没有:

有:

6、创建一个excel文件

python 复制代码
import openpyxl
import datetime

book = openpyxl.Workbook()  #在内存创建一个Excel
sheet = book.active     #获取活动的表格
sheet.title = "sample1"     #命名
datarows = ((1,2,3,4,5,10.1) , (100,200,"sum=(A1:A2)") , [] , [1000, 9000, datetime.datetime.now()])    #输入一些值,总体是一个大的元组,里面的每个元素都代表一行,每一个元素代表一个单元格
for row in datarows :
    sheet.append(row)   #把数据输入
sheet.column_dimensions['B'].width = len(str(sheet['B4'].value))    #把B列的单元格的长度设置为B4的字符串的长度
book.save("D:\学习\Python\one.xlsx")      #保存

输出:

7、数据类型更改

在Excel中,我们的每一个单元格里面的数值都有对应的数据类型,有时我们需要计算一些数据,但这些数据可能是字符串,无法完成计算,所以我们需要把所有的字符型的改成数值型的,但一个个改很麻烦,我们可以用Python来解决这个问题:

我们先看在Excel中:

左上角有绿色三角的就是字符型的,而没有的就是数值型

当我们有几百个,甚至成千上万的单元格需要取更改的时候,我们可以编辑一个python代码来实现,把其中需要更改的改一下:

下面是一个把所有文本形式的改成真正的数字:

python 复制代码
import openpyxl

book = openpyxl.load_workbook("D:\学习\Python\example.xlsx")  #打开目标文件
sheet = book.active     #获取活动的表格(也可不写这一行)

for sheet in book.worksheets :      #在这个文件中的每一个表中
    for row in sheet.rows :     #在这个表中的每一个行中
        for cell in row :       #在这个行中的每一个单元格中
            v = cell.value      #获取这个单元格的类型
            if type(v) == str :     #如果是字符型
                if v.isdigit() :        #如果是字符,且里面还全是数字
                    cell.value = int(v)     #变成整型
                else :
                    try :
                        cell.value = float(v)   #当然,也有可能是小数,但是小数点不是数字,所以放在了else中,而且因为可能包含一些普通的字符串,无法转化为数字,所以放在try里面
                    except :
                        pass
book.save(r"D:\学习\Python\two.xlsx")     #把这个转化完的表格另存在新的文件下

我们看看结果:

嗯,非常完美呢!

8、指定单元格样式

在Excel表中的每一个单元格,都是一个独立的个体,他们就像页面中的一个个盒子模型,我们可以给他设置特定的样式,同时格子中的文字也可以添加一些我们喜欢的样式:

python 复制代码
import openpyxl
from openpyxl.styles import Font , colors , PatternFill , Alignment , Side , Border

book = openpyxl.Workbook()      #创建一个Excel表格
sheet = book.active     #选第0张表格

for i in range(4) :
    sheet.append([i * 5 + j for j in range(5)])     #用双重循环生成一个四行五列的数字

side = Side(style = "thin")     #让单元格的边框是细线,还可以是thick、medium、dotted等
border = Border(left = side , right = side , top = side , bottom = side)    #生成一个边框对象,让这个边框的上下左右的四个边都是上面side要的那个样式

for row in sheet.rows :
    for cell in row :
        cell.border = border    #遍历每一个单元格,让每一个单元格都用上border的样式

sheet["A1"].fill = PatternFill(patternType='solid' , start_color = "00FF00")    #对A1单元格进行填充,solid是实心填充,颜色是绿色

al = sheet["A1"]    #进行一个简答赋值
a_font = Font(size = 18 , name = 'Times New Roman' , bold = True , color = "FF0000")    #创建一个针对字体样式的对象,让这个样式是18好字,并设置了字体名称和字体颜色
al.font = a_font    #把这个字体样式给al(说白了就是给A1)

sheet["A2"].font = sheet["A1"].font.copy(italic = True)     #我们创建一个针对A2单元格的样式,让这个样式是A1单元格的样式,用了copy命令,并在此基础上添加了斜体

book.save("D:\学习\Python\style.xlsx")    #保存一下!!!!!!!!!!!!!!!!!!1

我们来看看输出结果:

以上就是Python库与Excel的全部内容:)

相关推荐
七月的和弦几秒前
软件下载自用
python
小王努力学编程11 分钟前
动态规划学习——背包问题
开发语言·c++·学习·算法·动态规划
冬天vs不冷1 小时前
EasyExcel导出自动回显中文,读取自动转换码值(基于全局转换器与自定义注解)
java·excel
niuniu_6661 小时前
selenium应用测试场景
python·selenium·测试工具·单元测试·测试
满怀10152 小时前
Python扩展知识详解:lambda函数
开发语言·python
佚名涙3 小时前
go中锁的入门到进阶使用
开发语言·后端·golang
猫猫的小茶馆3 小时前
【PCB工艺】软件是如何控制硬件的发展过程
开发语言·stm32·单片机·嵌入式硬件·mcu·51单片机·pcb工艺
勘察加熊人4 小时前
wpf+c#路径迷宫鼠标绘制
开发语言·c#·wpf
蓝博AI4 小时前
基于卷积神经网络的眼疾识别系统,resnet50,efficentnet(pytorch框架,python代码)
pytorch·python·cnn
小黄人软件5 小时前
C# ini文件全自动界面配置:打开界面时读ini配置到界面各控件,界面上的控件根据ini文件内容自动生成,点保存时把界面各控件的值写到ini里。
开发语言·c#