Python库的使用

使用库

库 就是是别人已经写好了的代码, 可以让我们直接拿来用。

Python通过模块来体现"库"

  • 降低程序猿的学习成本
  • 提高程序的开发效率

按照库的来源,可以大致分成两大类:

  • 标准库: Python 自带的库. 只要安装了 Python 就可以直接使用
  • 第三方库: 其他人实现的库. 要想使用, 需要额外安装

第三方库是非常非常庞大的,数量和种类远大于标准库

一、标准库

1、认识标准库

在 Python 官方文档上可以看到这些库的内容.
https://docs.python.org/3.10/library/index.html

简单来说, 主要是这些部分:

  • 内置函数 (如 print, input 等)
  • 内置类型 (针对 int, str, bool, list, dict 等类型内置的操作).
  • 文本处理
  • 时间日期
  • 数学计算
  • 文件目录
  • 数据存储 (操作数据库, 数据序列化等).
  • 加密解密
  • 操作系统相关
  • 并发编程相关 (多进程, 多线程, 协程, 异步等).
  • 网络编程相关
  • 多媒体相关 (音频处理, 视频处理等)
  • 图形化界面相关

2、使用import导入模块

import [模块名]
  • 所谓 “模块” , 其实就是一个单独的 .py 文件.
  • 使用 import 语句可以把这个外部的 .py 文件导入到当前 .py 文件中, 并执行其中的代码

3、案例

①日期计算

输入任意的两个日期, 计算两个日期之间隔了多少天

  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime.datetime 构造两个日期. 参数使用 年, 月, 日 这样的格式.
  • 两个日期对象相减, 即可得到日期的差值
# 日期计算
import datetime
date1 = datetime.datetime(2023, 6, 8)
date2 = datetime.datetime(2020, 7, 8)
print(date1-date2)  # 1065 days, 0:00:00

可以直接从模块中导入类型:

from datetime import datetime
date1 = datetime(2023, 6, 8)
date2 = datetime(2020, 7, 8)
print(date1-date2)  # 1065 days, 0:00:00

这样不再需要模块名再加个.操作了

也可以将模块名重命名一下:

import datetime as dt
date1 = dt.datetime(2023, 6, 8)
date2 = dt.datetime(2020, 7, 8)
print(date1-date2)  # 1065 days, 0:00:00
②单词逆序

https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/
题目描述:

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"l am a student.“,则输出"student.a am l”。

  • 先删除首尾空格
  • 使用 str 的 split 方法进行字符串切分, 指定 空格 为分隔符. 返回结果是一个列表.
  • 使用列表的 reverse 方法进行逆序.
  • 使用 str 的 join 方法进行字符串拼接. 把列表中的内容进行合并.
class Solution:
    def reverseWords(self, s: str) -> str:
        s = s.strip() # 删除首尾空格
        tokens=s.split()
        tokens.reverse()
        return ' '.join(tokens)
③旋转字符串

https://leetcode.cn/problems/rotate-string/
题目描述:

给定两个字符串,s和goal。如果在若干次旋转操作之后,s能变成goal ,那么返回true。
s的旋转操作就是将s最左边的字符移动到最右边。
例如,若s = 'abcde’,在旋转一次之后结果就是’bcdea’。

  • 使用len求字符串的长度.如果长度不相同,则一定不能旋转得到.
  • 将s和自己进行拼接,然后直接使用in方法来判定goal是否是s+s的子串.
class Solution:
    def rotateString(self, s: str, goal: str) -> bool:
        return len(s)==len(goal) and goal in (s+s)
④统计是给定字符串前缀的字符串数目

https://leetcode.cn/problems/count-prefixes-of-a-given-string/
题目描述:

给你一个字符串数组words和一个字符串s,其中words[i]和s只包含小写英文字母。
请你返回words中是字符串s前缀的字符串数目。
一个字符串的前缀是出现在字符串开头的子字符串。
子字符串是一个字符串中的连续一段字符序列。

  • 依次遍历 words 中的字符串
  • 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀.
class Solution:
    def countPrefixes(self, words: List[str], s: str) -> int:
        count=0
        for word in words:
            if s.startswith(word):
            	# s是以word开头
                count+=1
        return count

字符串操纵的文档https://docs.python.org/3/library/stdtypes.html#str

⑤模拟实现everything

要求:

指定一个待搜索路径, 同时指定一个待搜索的关键字.
在待搜索路径中查找是否文件名中包含这个关键字.

  • 使用os.walk,只需要使用简单的循环,就可以完成递归遍历的过程,就不必手写递归代码了
  • os.walk返回一个三元组,分别是当前路径(这是一个绝对路径)当前路径下包含的目录名 (多个)当前路径下包含的文件名(多个)
# 模拟实现everything
# 模拟实现everything
import os

while True:
    inputPath = input("请输入要查找的文件起始路径:")
    pattern = input("请输入要查找的文件名字:")
    for dirpath, dirnames, filenames in os.walk(inputPath):
        for f in filenames:
            if pattern in f:
                print(f'{dirpath}/{f}')

在这里插入图片描述


更多关于os的文档:https://docs.python.org/3/library/os.html

二、第三方库

1、认识第三方库

第三方库就是别人已经实现好了的库,我们可以拿过来直接使用。
虽然标准库已经很强大了,但是终究是有限的。而第三方库可以视为是集合了全世界 Python 程序猿的智慧,可以说是几乎无穷无尽。

问题来了, 当我们遇到一个需求场景的时候, 如何知道, 该使用哪个第三方库呢?
——搜索引擎
当我们确定了该使用哪个第三方库之后, 就可以使用 pip 来安装第三方库了。

2、pip的使用

pip 是 Python 内置的包管理器

所谓 包管理器 就类似于我们平时使用的手机 app 应用商店一样. 第三方库有很多, 是不同的人, 不同的组织实现的. 为了方便大家整理,Python 官方提供了一个网站 PyPI https://pypi.org/, 来收集第三方库.
其他大佬写好的第三方库也会申请上传到PyPI 上. 这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了。

使用以下命令, 即可安装第三方库

pip install [库名]

注意:这个命令需要从网络上下载, 使用时要保证网络畅通。安装成功后, 即可使用 import 导入相关模块, 即可进行使用。

3、案例

①二维码生成器

二维码本质上,就是一段字符串
我们可以把任意的字符串,制作成一个二维码图片
生活中使用的二维码,更多的是一个URL(网址)

(1)需要qrcode

(2)查看qrcode文档
在这里插入图片描述

(3)使用pip安装

pip install qrcode[pil]

(4)写代码

import qrcode
img = qrcode.make('hello')
img.save('qrcode.png')

结果:
PS:可以在简历上把自己的博客和gitee链接变成这样的二维码,粘贴上去,更加分。

②操作excel

读取 excel 可以使用 xlrd 模块. 文档地址: https://xlrd.readthedocs.io/en/latest/
修改 excel 可以使用 xlwt 模块. 文档地址: https://xlwt.readthedocs.io/en/latest/
此处以 xlrd 为例, 演示 excel 的基本操作。
需求 有如下 excel 表格:E:/test.xlsx

在这里插入图片描述

求1班的平均分

1)安装 xlrd

pip install xlrd==1.2.0

注意: 此处要指定版本号安装. 如果不指定版本号, 则安装最新版. 最新版里删除了对 xlsx 格式文件的支持.

2)编写代码

  • 使用 open_workbook 方法打开一个 excel 文件。
  • 使用 xlsx.sheet_by_index(0) 获取到 0 号标签页。
  • 使用 table.nrows 获取到表格的行数。
  • 使用 table.cell_value(row, col) 获取到表格中 row, col 位置的元素值。
import xlrd

# 1、打开xlsx文件
xlsx = xlrd.open_workbook("E:/test/test.xlsx")
# 2、获取到指定的标签页
table = xlsx.sheet_by_index(0)

# 3、获取表格中有多少行
nrows = table.nrows
# 4、循环统计
count = 0
sum = 0
for i in range(1, nrows):
    # 获取到当前同学的班级id
    classID = table.cell_value(i, 1)
    if classID == 1:
        count += 1
        sum += table.cell_value(i, 2)
print(f'avg={sum/count}')

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值