Python学习笔记6-re和xlwt模块

用requests获取到数据,然后用BeautifulSoup解析数据,最后用re来提取数据,用xlwt将数据写入Excel文件里

re库

正则表达式常用操作符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
. 表示任何单个字符
[ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a-z]表示a到z单个字符
[^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或非b或非c的单个字符
* 前一个字符0次或无限次扩展 abc*表示ab、abc、abcc、abccc等
+ 前一个字符1次或无限次扩展 abc+表示abc、abcc、abccc等
? 前一个字符0次或1次扩展 abc?表示ab、abc
| 左右表达式任意一个 abc|def表示abc或def
{m} 扩展前一个字符m次 ab{2}c表示abbc
{m,n} 扩展前一个字符m至n次(含n) ab{1,2}c表示abc、abbc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
( ) 分组标记,内部只能使用|操作符 (abc)表示abc,(abc|def)表示abc或def
\d 数字,等价于[0-9]
\w 单词字符,等价于[A-Za-z0-9_]
\s 匹配任意空白字符,等价于[\t\n\r\f]

re库常用函数

1
2
3
4
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 搜索字符串,以列表类型返回全部能匹配的字串
re.sub() 在一个字符串中替换所有匹配正则表达式的字串,返回替换后的字符串

正则修饰符,控制匹配模式

1
2
3
re.I 大小写不敏感
re.S 使.匹配包括换行在内的所有字符
等等还有一些

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import re
#创建正则表达式对象,表示规则(字符串的模式)
pattern=re.compile("AA") #此处AA,是正则表达式,用来匹配其他字符串
m=pattern.search("CBAA") #search字符串是被匹配的内容
print(m)

#不用模式对象写法
m=re.search("asd","Aasd") #前面字符串是正则,后面是被校验字符串
print(m)

m=re.findall("a","ASDaDFGAa") #前面字符串是正则,后面是被校验字符串
print(m)

m=re.findall("[A-Z]+","ASDaDFGAa")
print(m)

m=re.sub("a","A","abcd") #第一个字符串为被替换字符,第二个为替换字符,第三个为匹配字符串
print(m)

#建议在正则表达式中,被比较的字符串前面加上r,不用担心转义字符的问题

xlwt库

为啥叫xlwt,我猜测可能是”excel wtire”的缩写(纯属瞎掰,为了好记)

利用xlwt库将抽取的数据datalist写入Excel表格

四步
1.以utf-8编码创建一个Excel对象
1.创建一个Sheet表
1.往单元格写入内容
1.保存表格

1
2
3
4
5
import xlwt  #弹幕说直接创建csv格式文件也行,不太了解
workbook=xlwt.Workbook(encoding="utf-8") #创建workbook对象
worksheet=workbook.add_sheet("sheet1") #创建工作表
worksheet.write(0,0,"hello") #写入数据,和矩阵或者二维数组差不多,00表示左上角元素。第一个参数表示行,第二个参数表示列,第三个参数表示内容
workbook.save("students.xls") #保存数据表

小练习,把九九乘法表写入excel:

1
2
3
4
5
6
workbook=xlwt.Workbook(encoding="utf-8")
worksheet=workbook.add_sheet("cfb")
for i in range(1,10):
for j in range(1,i+1):
worksheet.write(i-1,j-1,"{}*{}={}".format(i,j,i*j))
workbook.save("cfb.xls")

结果如下:

image-20210506091915963

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020-2021 Blog of Tianze

请我喝杯咖啡吧~

支付宝
微信