DAY19学习总结:
匹配对象相关:
-
忽略大小写相关操作 ( ?i ) :
print(fullmatch(r'(?i)ABC','abc'))
-
单行匹配相关操作 ( ?s ):
- 既要单行匹配又要忽略大小写 — (?si)
-
匹配对象相关操作:
- 匹配结果对应的字符串:匹配对象.group()
- 获取匹配结果在原字符串中的位置:匹配对象.span()
- 获取原字符串:匹配结果.string
迭代器:
- 迭代器是容器型数据类型
- 特点:无法通过打印迭代器查看元素,也无法统计元素个数,需要使用元素的时候必须将元素从迭代器中取出,取出以后该元素就会从迭代器中消失。
- 创建迭代器 — 将其他序列转换成迭代器
- iter(序列)
- 如何获取迭代器的元素
- 不管以什么样的方式获取到迭代器中的元素,被获取到的元素一定会从迭代器中消失
- 获取单个元素 — next(迭代器)
- 遍历
生成器:
- 生成器是一种容器,但是这个保存的不是多个数据,而是产生(创建)多个数据的算法,同时具有迭代器保存数据的特点:
- 打印看不到内容
- 不支持len操作
- 元素也是取一个少一个,而且不能再放回生成器中
- 创建生成器
- 调用一个带有yield关键字的函数就可以得到一个生成器对象
- 注意:如果函数中有yield,那么调用这个函数不会执行函数体,也不会获取函数返回值,而是创建一个生成器对象
- 控制生成器产生数据的个数和值
- 生成器产生数据的个数和值由执行函数体的时候会遇到几次yield以及每次遇到yield的时候,后面的值来决定
- 生成器创建数据的原理
- 调用函数创建生成器的时候不会执行函数体,在通过生成器对象获取生成器中元素的时候才会执行函数,而且每次在执行函数体的时候只会执行到yield就停止,并且记录停止的位置,下次再获取元素的时候从上次结束的位置接着执行。
csv文件:
-
csv文件(逗号分隔值文件) — 让数据以表格的方式存储(更简单的表格文件)
-
csv文件的读操作
-
方法一(读文件内容得到一个迭代器,迭代器中的元素是每一行内容对应的列表)
-
# csv.reader(文件对象) # reader=csv.reader(open(文件路径,'r',encoding='utf-8',newline='')) # print(next(reader)) — 获取一行内容 # print(list(reader)) — 转换成列表获取全部内容
-
-
方法二(读文件内容得到一个迭代器,迭代器中的元素是每一行内容对应的字典内容)
-
reader2=csv.DictReader(open(文件路径,'r',encoding='utf-8',newline='')) for x in reader2: print(x)
-
-
-
csv文件的写操作
-
方法一(以列表为单位写入一行数据)
-
# 创建writer对象: csv.writer(文件对象) # writer1=csv.writer(open(文件路径,'w/a',encoding='utf-8',newline='')) # writer1.writerow([元素1,元素2,元素3...]) — 写一行 # writer1.writerows([元素1(元素是个小列表),元素2,元素3...]) — 写多行
-
-
方法二(以字典为单位写入一行数据)
-
# writer2=csv.DictWriter( # open(文件路径,'w/a',encoding='utf-8',newline=''), # ['键1','键2','键3'...] # ) # writer2.writeheader() —— 导入表头 # writer2..writerow({元素1,元素2,元素3...}) — 写一行 # writer1.writerows([元素1(元素是个小字典),元素2,元素3...]) — 写多行
-
-