【AI辅助自动化办公】第一篇 Python基础

写在前面

暂无

AI辅助自动化办公 第一篇 Python基础

常用的Python集成开发环境

  • Anaconda

    集成了Python解释器和许多数据科学领域常见库(如NumPy、Pandas等)

    使用conda命令统一管理环境

  • Pycharm

  • Spyder

    用Python编写的免费开源的IDE,具有综合开发工具的高级编辑、性能分析、调试和分析等功能,又具备数据探索、交互式执行、深度检查、科学软件包的美观和可视化等特性

    –> Anaconda已内置Spyder

初识模块、包、库

模块

  • 任何以.py为扩展名的Python文件都可以作为一个模块

  • 一个项目有大量模块,可以用包来管理这些模块
  • 是一个包含了__init__.py文件的文件夹
  • 包中可以有0个 / 若干个Python文件
  • 可用于管理模块和分发
    • 需要时将模块打包上传到Python仓库中进行分享

  • 是具有相关联功能的模块和包的集合
  • Python内置了涵盖方方面面的标准库
  • Python社区提供了数十万个第三方库,可以通过pip命令安装

使用pip命令安装第三方库

  • pip install xxx

    安装xxx包

  • pip list

    查看已安装的第三方库

  • pip uninstall -y xxx

    删除第三方库(-y表示同意删除,跳过二次确认)

为pip命令设置镜像源

1
2
3
4
5
6
国内较知名的镜像源
清华大学镜像站:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云镜像站:https://mirrors.aliyun.com/pypi/simple/
豆瓣镜像站:https://pypi.douban.com/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
北京大学镜像站:http://pypi.mirrors.163.com/simple/
  • 临时操作:

    • 方法一:在命令行使用环境变量来指定源

      • PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple pip install package_name
    • 方法二:

      • pip install xxx -i https://pypi.mirrors.ustc.edu.cn/simple/

        临时使用中科大镜像源安装xxx

  • 默认设置:修改pip配置文件

    • Windows:

      1. 在文件路径输入%APPDATA%,回车,在当前文件夹下新建名称为pip的文件夹

      2. pip文件夹中新建名为pip.ini的文件,打开此文件并输入以下内容:

      3. [global]
        index-url = https://pypi.tuna.tsinghua.edu.cn/simple
        trusted-host =  pypi.tuna.tsinghua.edu.cn
        
        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
        32
        33
        34
        35

        - Linux/macOS:

        1. 打开终端,执行`mkdir ~/.pip`,在用户目录下新建`.pip`文件夹,执行`vim ~/.pip/pip.conf`,新建并打开`pip.conf`
        2. 打开`pip.conf`文件后,按`i`进入编辑模式,将同`Win`系统中的`pip.ini`内容复制到当前文件
        3. 按`<Esc>`退出编辑模式,输入`:wq`保存并退出vim



        ### 导入模块

        - `import xxx` 导入xxx模块整个模块
        - `from xxx import yyy` 准确控制导入模块xxx中的部分内容yyy
        - `import xxx as zzz` 导入xxx模块并起别名为zzz
        - `print(xxx.__name__)` 获取xxx模块的名称

        - 主模块名称`__main__`

        ```python
        # 通过判断模块名称是否为__main__来判断Python脚本文件是否作为执行入口


        # test.py
        print('test')
        if __name__ == '__main__':
        print('main')


        '''
        执行Python test.py,由于test.py作为执行入口,由此输出test和main,说明test.py是主模块

        在当前目录中打开Python交互解释器,输入import test --> 输出test,则test.py不是执行入口,而是被其他代码导入

        因此在执行完第一行代码后,执行第二行代码的条件不成立,第三行不执行
        '''

Python编程基础

只记录不熟和不会的知识点

字符串

使用r前缀表示原始字符串

  • 反斜杠\有转义的作用
1
2
3
4
5
6
path1 = 'C:\nodejs'   # 自动把\n看作转义字符了
print(path1)
# C:
# odejs
path2 = r'C:\nodejs'
print(path2) # C:\nodejs

使用f格式化字符串

  • 在字符串的前引号前面加上f,在字符串中使用花括号({})包含变量,就可以对字符串进行格式化
1
2
3
name = 'Linus'
greeting = f'Hello, {name}'
print(greeting) # Hello, Linus

使用索引获取字符或部分字符串

  • 索引从0开始
  • [x:y] 索引范围:左闭右开 索引从0开始则0可省略
  • 支持反向索引:[x:y] 在数字前加上符号 索引范围到最后一个字符,则可省略右边索引
  • 例子:获取倒数第八位到最后一位的字符串:print(name[-8:])

修改字符串大小写

  • title() 将字符串中每个单词修改为首字母大写
  • upper() 将字符串全部变为大写
  • lower() 将字符串全部变为小写

删除字符串两边的空白

  • strip() 删除两侧空白
  • lstrip() 删除左侧空白
  • rstrip() 删除右侧空白

格式化数字

  • 在花括号({})中的变量后添加冒号(:)和对应的处理方式
  • :.N 用于保留N位有效数字
  • :.Nf 用于保留N位小数
1
2
3
4
print(f'x(保留两位有效数字):{x:.2}')
print(f'x(保留两位小数):{x:.2f}')
print(f'x(保留两位有效数字):{x:.2}')
print(f'x(保留两位有效数字):{x:.2}')
  • :<N 用于保留固定的N位字符,且向左对齐
  • :^N 用于保留固定的N位字符,且居中对齐
  • :>N 用于保留固定的N位字符,且向右对齐
1
2
3
4
x = 123
print(f'{x:<10}') # 123.......
print(f'{x:^10}') # ....123...
print(f'{x:>10}') # .......123
  • 应用:两位数字表示月份
1
2
3
4
month = 1
print(f'{month:0>2}') # 01
month = 12
print(f'{month:0>2}') # 12

列表

  • 通过索引获取列表元素:从0开始 左闭右开
  • 在列表中添加新元素:
    • append() 将元素添加到列表末尾
    • insert() 在指定索引位置前插入新元素
  • 删除列表元素:
    • 使用del语句,结合列表索引,删除列表中指定位置元素
    • 使用pop()方法删除指定的元素,并返回被删除的值
    • 使用remove()方法删除指定值的元素
  • 使用加号(+)对列表进行合并,生成新的列表

集合

  • 无序的不重复元素序列
  • 创建非空集合可以用花括号({}
  • 创建空集合,必须使用set()函数(空的花括号默认创建空字典)
    • set()函数可以接收列表、元组、集合等,能将序列中的元素去重并生成新的集合
  • 求两个集合的交集&
  • 求两个集合的并集|
  • 求两个集合的补集-

字典

  • 一系列键值对

  • 也可以用花括号({})表示字典,存放键值对

    • 花括号中每个元素都是键值对,键和值之间使用冒号分隔,键值对之间用逗号分隔
  • 字典中的必须是唯一且不可变的,可以是任意的

    • 不可变:不能被修改

      数组、字符串、元组是不可变的,可以作为字典的键

      列表、集合是可变的,不能作为字典的键

  • 可以使用函数dict()创建字典

    • 键值对中的作为函数参数作为参数值传入

    • person = dict(name = 'aa', age = 18)
      print(person)  # {'name': 'aa', 'age': 18}
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17

      - 访问字典中的值:

      - 方法一:使用方括号(`[]`)指定键索引访问某个元素

      - 方法二:使用字典的`get()`方法

      > 若提供一个参数:参数为想要访问的键名称,键不存在则返回None
      >
      > 若提供两个参数:第二个参数为键不存在时所返回的默认值

      ```python
      person = dict(name = 'aa', age = 18)
      print(person.get('name')) # aa
      print(person.get('name', 'bb')) # aa
      print(person.get('weight')) # None
      print(person.get('weight', 40)) # 40
  • 新增或修改键相关联的值

    • 使用方括号([])可赋予新值
      • 键存在→修改与键相关联的值
      • 键不存在→新增键值对
  • 删除字典的键值对

    • 方法一:使用del语句,结合键索引

      1
      del person['name']
    • 方法二:使用pop()方法删除指定键值对,还会返回被删除键相关联的值

      1
      print(person.pop('name'))  # aa

运算符

  • is 运算符

    • is判断两个变量的内存引用是否相等,返回结果为布尔值

      即判断两个变量是否指向同一个内存地址

    • is not

  • in运算符

    • in判断值是否在给定的序列(如字符串、列表、元组、字典等)中。返回结果为布尔值

函数

  • 利用range函数生成数字序列
1
2
range(stop)
range(start, stop[, step])
  • 使用sorted函数排序列表
1
sorted(iterable, key = None, reverse = False)
  • 使用filter函数按条件过滤

    • Python的内置函数filter()能够按条件过滤列表、元组、字典等序列,分别接收一个条件函数和一个可迭代对象

      函数filter()会遍历可迭代对象中的每个元素,把条件函数作用于每个元素,根据该函数返回的结果为True还是False来决定保留还是丢弃该元素

      函数filter()返回的结果是一个惰性序列→必须对返回结果进行迭代才能推动迭代序列中的元素

      可使用list函数或for语句对其进行迭代

1
filter(function, iterable)
1
2
3
4
5
6
7
8
# 利用函数filter()过滤出1~100中能够被24整除的整数

def divisible_by_24(x):
if x % 24 == 0:
return True
return False
l = filter(divisible_by_24, range(1, 101))
print(list(l)) # [24, 48, 72, 96]
  • 使用map()函数进行映射

    • Python的内置函数map()能够对列表、元组、字典等序列中的每个元素进行映射

      函数map()会遍历可迭代序列中的每个元素,把处理函数作用于每个元素,将该函数结果放入新的序列中

      函数map()的返回结果同filter()类似,是一个惰性序列,意味着必须对返回结果进行迭代

    可以用list函数或for语句对其进行迭代

    1
    map(function, *iterable)
    1
    2
    3
    4
    5
    # 利用函数map()将1~10的整数都乘2
    def multiplied_by_2(x):
    return x * 2;
    l = map(multiplied_by_2, range(1, 11))
    print(list(l)) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
    • 函数map()可接受多个迭代对象
    1
    2
    3
    4
    def multiply(x, y):
    return x * y;
    l = map(multiply, range(1, 11), range(1, 11))
    print(list) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
  • 匿名函数lambda

    • 匿名函数即没有名字的函数,通常用于定义简单的函数

    • 匿名函数可以接收任意多个参数并且返回单个表达式的值

    • lambda arg1, arg2, ..., argn: expression

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 匿名函数可以赋给变量,此变量就代表函数,使用方式与普通函数完全一样
# 也可以直接当作函数使用,需要将匿名函数用小括号括住以进行函数调用

# 方式1:定义add1()函数
def add1(x, y):
return x + y;
result = add(1, 2)
print(result) # 3

# 方式2:使用lambda表达式定义,并赋给add2变量
add2 = lambda x, y: x + y
result = add2(1, 2)
print(result)

# 方式3:使用lambda表达式定义并使用
result = (lambda x, y: x + y)(1, 2)

  • 匿名函数通常和sorted() filter() map() 等函数结合使用
1
2
l = filter(lambda x: x % 24 == 0, range(1, 101))
print(list(l)) # [24, 48, 72, 96]

调试代码

  • 书P45-47
  • 书名:Python自动化办公应用大全(ChatGPT版):从零开始教编程小白一键搞定烦琐工作
  • 环境:VSCode

使用pandas进行数据分析和可视化

  • 日常工作处理文件类型:

    • 以行列形式存储的Excel文件、csv文本文件 --> 结构化数据
    • 以树形结构存储的JSON文件 --> 半结构化数据
  • 使用模块:pandas

    • 常用操作:数据读写数据存储数据查找数据可视化

使用open方法读写文件

1

  • Copyrights © 2024-2025 brocademaple
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信