博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

11.数学与随机数

(1)math包主要处理数学相关的运算。math包定义了两个常数:

math.e   # 自然常数e      

math.pi  # 圆周率pi

(2)math包运算

math.ceil(x)       # 对x向上取整,比如x=1.2,返回2

math.floor(x)      # 对x向下取整,比如x=1.2,返回1

math.pow(x,y)      # 指数运算,得到x的y次方

math.log(x)       # 对数,默认基底为e。可以使用base参数,来改变对数的基地。

math.sqrt(x)       # 平方根

(3)math包三角函数:

math.sin(x), math.cos(x), math.tan(x), math.asin(x), math.acos(x), math.atan(x)

这些函数都接收一个弧度(radian)为单位的x作为参数。

角度和弧度互换: math.degrees(x), math.radians(x)

(4)random包

1.随机挑选和排序

random.choice(seq)   # 从序列的元素中随机挑选一个元素

比如random.choice(range(10)) #从0到9中随机挑选一个整数。

random.sample(seq,k) # 从序列中随机挑选k个元素

random.shuffle(seq)  # 将序列的所有元素随机排序

2.随机生成实数

random.random()        # 随机生成下一个实数,它在[0,1)范围内。

random.uniform(a,b)      # 随机生成下一个实数,它在[a,b]范围内。

(5)decimal 十进制浮点运算类 Decimal

 

12.正则表达式

(1)匹配字符串

str.startswith()和str.endswith()

一个句子结尾是\n来结束的,所以用endswith(‘’)方法匹配时要注意传入的变量带有\n

或者用切片操作,str[:-1].endswith()

 

 (2)正则表达式概念

使用单个字符串来描述匹配一系列符合某个句法规则的字符串,是对字符串操作的一种逻辑公式,应用场景在处理文本和数据。

re 模块使Python语言拥有全部的正则表达式功能。

(3)导入re模块  #import re

利用re.compile(正则表达式)返回pattern

利用pattern.match(待匹配字符串)返回match

match.group()返回子串

match.string()返回主串

match.span()返回子串在主串中的位置

 

 (4)re.match 尝试从字符串的开始匹配一个模式。

 

 pattern  匹配的正则表达式

string 要匹配的字符串

flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写, 多行匹配等等

匹配成功re.match方法返回一个匹配的对象,否则返回None。

(5)group(num)或groups()匹配对象函数来获取匹配表达式。

group(num=0)匹配的整个表达式的字符串,group()可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

groups()返回一个包含所有小组字符串的元组。

(6)基本匹配符

①.      匹配任意字符(除了\n),一个点只是一个字符

②[…]   匹配字符集   如[a-z][A-Z][0-9][a-zA-Z0-9]

③[^…]  匹配不在[]中的任意字符

④\d     匹配数字等价于[0-9]

⑤\D     匹配非数字

⑥\s     匹配空白,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]

⑦\S     匹配非空白

⑧\w     匹配单词字符,匹配包括下划线的任何单词字符。等价于[A-Za-z0-9_]  

⑨\W     匹配非单词字符

 

 (7)特殊匹配符

①*      匹配前一个字符0次或无限次

②+      匹配前一个字符1次或无限次

③?     匹配前一个字符0次或1次

④{m}    匹配前一个字符m次

⑤{m,n}  匹配前一个字符m到n次

⑥*?或+?或?? 匹配模式变为非贪婪(尽可能减少匹配字符)

 

 (8)高级匹配符

①^      匹配字符串开头

②$      匹配字符串结尾

③\A     指定的字符串必须出现在开头

④\Z     指定的字符串必须出现在结尾

⑤|      或,匹配左右任意一个表达式

⑥(ab)   括号中表达式作为一个分组

⑦\<number>  引用编号为num的分组匹配到的字符串

⑧(?P<name>) 分组起一个别名

⑨(?P=name)  引用别名为name的分组匹配字符串

 

 (9)其他方式

①search(pattern,string,flags=0)

会在字符串内查找模式匹配,直到找到第一个匹配

匹配成功re.search方法返回一个匹配的对象,否则返回None

②findall(pattern,string,flags=0)

找到匹配,返回所有匹配部分的列表

③sub(pattern,repl,string,count=0,flags=0)

将字符串中匹配正则表达式的部分替换为其他值

④split(pattern,string,maxsplit=0,flags=0)

根据匹配分割字符串,返回分割字符串组成的列表

 

 (10)修饰符

正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|) 它们来指定。

①re.I     使匹配对大小写不敏感

②re.M     多行匹配,影响 ^和$

③re.S     使.匹配包括换行在内的所有字符

(11)抓取网页中的图片到本地

1:抓取网页

2:获取图片地址

3:抓取图片内容并保存到本地

 

 

 
posted on 2022-01-23 18:19    阅读(51)  评论(0)    收藏  举报