第一部分
第一章 Python 基础
- 数学操作符
|操作符|操作|例子|求值为|
|:—-:|:—-:|:—-:|:—-:|
|**|指数|2**3|8|
|//|商数取整|22//8|2| - python 中字符串以 单引号 包围 ‘strs’
- python 变量命名的规则
- 只能是一个词
- 只能包含数字字母和下划线
- 不能以数字开头
- 变量区分大小写
- 变量用小写字母开头是 Python 的惯例
- 数字的字符串值与整型值和浮点值完全不同,但整型值可以与浮点值相等
42 == '42' # false42 == 42.0 # true
第二章 控制流
- 二元布尔操作符
and和or(&& ||) not操作符 (!)- 计算优先级
算术和比较操作符 ->not操作符 ->and操作符 ->or操作符 代码块
- 缩进增加时,代码块开始
- 代码块可以包含其他代码块
- 缩进减少为0,或减少为外面包围代码块的缩进,代码块就结束了
if 控制语句
1
2
3
4
5
6if name == 'Alice':
print('Hello ,Alice.')
elif name == 'Bob':
print('Get out,Bob')
else:
print('Hello ,stranger')- while 循环语句
1
2while True:
print('Hello world!') - 在 Python 中,在用于条件时,0 、0.0 、和 ‘’ 被认为是 False
- for 循环语句
1
2
3print('My name is')
for i in range(5):
print('Jimmy Five Times (' + str(i) +')') - 只能在
for和while语句内部使用continue和break range()的开始、停止和步长参数range()的第一个参数是循环变量开始的值,第二个参数是上限但不包含它
i in range(1,10) 相当于 1<=i<>10range()的第三个参数是步长,就是每次循环结束后增加的值
- 导入模块
import random导入random模块 - 用
sys.exit()提前结束程序
第三章 函数
None表示没有值- 在被调用的函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。
- 如果需要在一个函数内修改全局变量,就使用
global语句。 - 区分一个变量是处于局部作用域还是全局作用域
- 变量在全局作用域中使用就是全局变量
- 如果在一个函数中,有针对该变量的
global语句,它就是全局变量 - 否则,如果该变量用于函数中的赋值语句,他就是全局变量
- 但是,如果该变量没有用在赋值语句中,它就是全局变量
第四章 列表
- Python 列表支持负数下标,例如 -2 表示倒数第二个下标
- 列表切片 spam[0:4] 代表列表中第1至第4个元素 即 spam[0]、spam[1]、spam[2]、spam[3]
- 使用
len()取得列表的长度 - 使用 + 连接列表 使用 * 复制列表
- 使用
del语句从列表中删除值 innot in检查元素指定元素是否在列表中,返回布尔值- 方法
- 方法和函数是一回事,只是它是调用在一个值上
- 列表的一些方法
index()方法在列表中查找值append()insert()在列表中添加值remove()方法从列表中删除值 知道要删除值的下标,用del,知道要删除的值, 用removesort()方法将列表中的值排序
- 类似列表的类型:字符串和元组
- 不能对字符串进行添加、删除或改变操作,改变一个字符串的正确方式是切片和连接
- 列表用
[]开始结束 元组使用()开始结束 ;列表内容可变,元组内容不可变 - Python 接受列表或元组中最后表项后面跟的逗号
- 如果需要一个永远不会改变的值的序列,就使用元组
- 使用
list()和tuple()函数来转换类型 - 将列表赋给一个变量时,实际上是将列表的引用赋给了该变量
- 当函数被调用时,参数的值被赋值给变元;对于列表,这意味着变元得到的是引用的拷贝,也就是说,传递列表给函数时,函数内的操作会改变列表的值
copy.copy()复制列表或字典这样的可变值,而不只是复制引用- 如果要复制的列表中包含了列表,就要使用
copy.deepcopy()
第五章 字典和结构化数据
- 字典是许多值的集合,但不像列表的下标,字典的索引可以使用许多不同的数据类型,不只是整数;字典的索引被称为 键
- 字典输入时用
{}开始和结束 - 字典中的表项不排序
- 字典不能切片
- keys() 返回键、 values() 返回值、 items() 返回键值对
- setdefault() 设置对应键的值
第六章 字符串操作
- 可以在字符串开始的引号之前加上 r 使它成为原始字符串,原始字符串完全忽略所有的转义字符,打印出字符串中的所有倒斜杠
upper()lower()isupper()islower()isalpha()isalnum()isdecimal()isspace()istitle()startswith()endswith()join()调用这个函数的字符串被插入到列表参数中每个字符串的中间split()按照传入的参数将字符串分离rjust()ljust()center()对齐文本strip()rstrip()lstrip()删除空白字符pyperclip模块拷贝粘贴字符串pyperclip模块有copy()paste()函数,可以向计算机剪贴板发送文本,或者从它接收文本
第二部分 自动化任务
第七章 模式匹配与正则表达式
- 正则表达式 简称 regex (regular expression)
- 正则表达式记号
|符号|含义|
|:—-:|:—-:|
|\d|一位数字字符|
|\D|除 0 到 9 以外的任何字符|
|\s|空格、制表符或换行符(空白字符)|
|\S|除空白字符以外的任何字符|
|.|通配符,匹配除换行之外的所有字符|
|[abd]|匹配方括号内的任意字符|
|[^abd]|匹配方括号以外的任意字符|
|||或者,表示一个或另一个|
|()|给正则表达式分组|
|?|1.问号之前文本匹配零次或一次 2.启用非贪心匹配|
|*|星号之前的文本匹配零次或多次|
|+|加号之前的文本匹配一次或多次|
|{}|匹配指定次数,{3}匹配3次,{3,5}匹配3到5次,{3,}匹配3到无数次,{,5}匹配0到5次|
|^|'^hello'要查找的文本必须以 hello 开始|
|$|'hello$'要查找的文本必须以 hello 结束| - Python 中所有的正则表达式的函数都在 re 模块中
- 使用正则表达式步骤
- 用
import re导入正则模块 - 用
re.compile()函数创建一个 regex 对象(使用原始字符串,即在字符串前添加 r ) - 向 regex 对象的
search()传入想要查找的字符串,它返回一个 match 对象 ,一般命名为 mo (match object 猜测) - 调用 match 对象的
group()方法,返回实际匹配到的字符串
- 用
- 添加括号将在正则表达式中创建 分组 ,例如
(\d\d\d)-(\d\d\d-\d\d\d\d)将正则表达式分为两组,在使用group()获得匹配结果时,就可以使用参数12来返回指定分组的匹配结果,比如匹配结果是422-212-4512,那么group(1)返回422,如果传入0或者不传参数,返回匹配到的整个文本 - 字符
|称为管道(pipe), 正则表达式r'Batman|Tina Fey匹配Batman或Tina Fey - 字符
?表明它前面的分组在这个模式中是可选的 - 贪心和非贪心匹配
在{}后添加一个?可以使用非贪心匹配,否则默认使用贪心匹配 findall()方法匹配所有能匹配到的字符串,search()匹配第一个能匹配到的字符串- 不区分大小写的匹配 :以
re.I作为re.compile()的第二个参数第八章 读写文件
os.path.join()可以根据运行的系统(Windows,Linux,OS X…)将传给它的参数连接成当前操作系统风格的路径名os.getcwd()获得当前工作路径的字符串;os.chdir()改变当前工作目录- os读写文件模块的函数及其作用
|函数|作用|
|:—-:|:—-:|
|os.path.join()|可以根据运行的系统(Windows,Linux,OS X…)将传给它的参数连接成当前操作系统风格的路径名|
|os.getcwd()|获得当前工作路径的字符串|
|os.chdir()|改变当前工作目录|
|os.makedirs()|创建新的文件夹|
|os.path.abspath()|返回参数的绝对路径的字符串|
|os.path.isabs()|如果参数是绝对路径,返回 True ,否则返回 False |
|os.path.relpath(path,start)|返回从 start 路径到 path 的相对路径的字符串,如果没有提供 start ,则以当前工作目录作为起点|
|os.path.dirname(path)|返回一个字符串,包含 path 参数中最后一个斜杠之前的所有内容|
|os.path.basename(path)|返回一个字符串,包含 path 参数中最后一个斜杠之后的所有内容|
|os.path.getsize(path)|返回 path 参数中文件的字节数|
|os.listdir(path)|返回文件名字字符串列表|
|os.path.exists(path)|判断指定的文件或文件夹是否存在,返回 True 或 False |
|os.path.isfile(path)|判断参数是否是一个文件,返回 True 或 False|
|os.path.isdir(path)|判断参数是否是一个路径,返回 True 或 False| - 用 Python 读文件的步骤
- 调用
open()返回一个 File 对象 - 调用 File 对象的
read()或write()方法 - 调用 File 对象的
close()方法,关闭该文件
- 调用
- File 对象的
read()方法可以传入rwa参数,分别代表 只读 、 写 和 添加模式 - 用 shelve 模块可以读写二进制文件