python小知识点1

1.如果要对有序的变量进行奇偶操作如:字符串,列表,元组,建议使用切片操作

打印出奇位数索引值

def func(l):
    return l[1::2]
print(func([1,2,3,4,5]))

 

2.比较运算符返回结果为布尔值

 

3.判断不为空可以直接用if x

 

4.三元运算符 

判断大小  a if a>b else b

变量 = 条件返回True的结果 if 条件 else 条件返回False的结果

必须要有结果,必须有if和else,只能是简单的情况

 

5.正则默认是贪婪匹配,是从后面向前匹配

<a>.....</a>123

<.*> 先匹配</a>中的>再匹配到<a>中的<,结果是<a>.....</a>

在量词后面加上?就是非贪婪匹配

<.*?>是先找到第一个符合‘>‘后,匹配前面所有的,结果是<a>

.不能匹配换行符

 

 6.匹配10位以上至少含有一位数字,一位字母,不包含其他特殊字符

第一种:^(?=[a-zA-Z]*[0-9])(?=[0-9]*[a-zA-Z])[a-zA-Z0-9]{10,}$

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{10,}$

第二种:len(data) > 9 and all(re.search(i, data) for i in ('[A-Z]', '\d', '[a-z]'))

第三种:

letters = set(data)

return bool(len(data) >= 10 and upper & letters and lower & letters and digits & letters)

 

匹配10位以上至少含有一位数字,一位小写字母,一位大写字母,包含其他特殊字符

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9]).{10,}$

?=不同的人叫法不一样,你称之为预查,我更倾向于叫零宽断言,也就是说?=只是匹配一个位置,并不匹配具体的字符,所以是零宽,也就是宽度是0。
所以(?=[a-zA-Z]+)匹配一个位置,这个位置后面紧跟至少一个字母,注意此时位置并没有后移;
(?=[0-9]+)也是匹配一个位置,这个位置后面后面紧跟至少一个数字;
因为(?=[a-zA-Z]+)(?=[0-9]+)都只匹配位置,而不匹配具体的字符,这两个又直接写在了一起,也就是说(?=[a-zA-Z]+)(?=[0-9]+)意味着这个位置后面紧跟至少一个字母,同时紧跟至少一个数字,也就是说这个位置后面的字符既是字母又是数字,显然这样的位置不存在。

 

转载于:https://www.cnblogs.com/daoyueweiku/p/9670377.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值