python-day16
一、正则表达式
regular expression -----regex 验证匹配
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。
方法:
match() 匹配 从头进行匹配 匹配不成功则返回None
fullmatch() 从头到尾 整个字符串跟pattern进行匹配 匹配不成功则返回None
search() 扫描整个字符串查找匹配正则格式的内容,找到返回Match
Match对象:
match.group() 匹配的内容
match.span() 匹配内容的位置
search: 只要在字符串中找到匹配的则不会继续查找
findall: 查找所有匹配的内容,返回值是一个列表
import re
# 通过re模块的compile函数,返回一个pattern对象
pattern = re.compile('abc')
# 通过pattern对象:match search findall split...
match_obj = pattern.match('abcsdfszzabc')
print(match_obj)
# 匹配对象调用group获取匹配的内容
g = match_obj.group()
print(g) a = re.match('123a','123A3454365123A',re.I)
print(a)
b = a.group()
print(b) a = re.fullmatch('aaa','AAA',re.I)
print(a) b = re.search('abc','asdabcwrfsd',re.I)
print(b) print(match_obj.group()) # 匹配的内容被取出来
print(b.span()) # 匹配内容的位置
字符 功能
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_(下划线)
\W 匹配非单词字符
* 配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
import re s = 'asfghjdfghaxxyxbswabrjrtwegdasazzb'
m_obj = re.search('a[xyz]*b', s)
if m_obj:
print(m_obj.group())
else:
print('没有找到') # 两头是数字,中间是字母
s = '1asd23sad4'
a = re.search('\d[a-z]+\d', s)
if a:
print(a.group())
else:
print('没有找到') result = re.findall('\d[a-z]+\d', s)
print(result) # ['1asd2', '3sad4'] # 验证qq号码
qq = input('请输入你的qq号码:')
a = re.fullmatch('[1-9]\d{5,10}', qq)
print(a) # 方式二
qq = input('请输入你的qq号码:')
a = re.search('^[1-9]\d{5,10}$', qq)
print(a)
注:在写正则表达式要在前面添加'r', raw
正则的替换:
sub 替换
sub(pattern,repl,str)
repl:可以str类型也可以是callable类型
s = 'sa sadfa sadf sad'
a = re.sub(r'\s+', '#', s)
print(a) s = 'xiaohua =20, xiaoming = 18 xiaofang = 21' def change(mobj):
print(mobj)
content = mobj.group()
result = str(int(content) + 1)
return result a = re.sub(r'\d+', change, s)
print(a)
例子:
import re username = input('请输入用户名:')
a = re.fullmatch('[a-zA-Z]\w{5,}',username)
if a:
print(a.group())
else:
print('没有找到!!!') num1 = input('请输入手机号:')
a = re.fullmatch('(13|15|18)\d{9}',num1) # 1[358]\d{9}
if a:
print(a.group())
else:
print('没有找到!!!') num1 = input('请输入手机号:')
a = re.fullmatch('(\d{3}|\d{4})-\d{8}',num1) # \d{3,4} - \d{8}
if a:
print('合法!!!')
else:
print('没有找到!!!') num1 = 'I am a good boy , a handsome boy'
a = re.findall(r'\b[a-z]+\b',num1,re.I) #
print(a)
贪婪与非贪婪:
'''
贪婪与非贪婪:
'''
s = 'abbbbbbbbbbbbbc'
a = re.match('ab+?',s)
print(a.group()) s = '<div>hello</div><div>world</div>'
a = re.match(r'<(?P<n>.+)>.+?</(?P=n)>',s)
print(a.group())
import re
s = 'hello jack,hello tom'
a = re.findall('(hello|hi) (jack|tom)',s,re.I)
print(a[1][1])
print(a) # 邮箱:126,163,qq 而且必须符合邮箱的格式 email = input('请输入邮箱:')
a = re.search(r'^(\w{4,10})@(126|163|qq).com$',email)
if a:
b = email_name = a.group(1)
print('合法!!!',b)
else:
print('不合法!!!') # 1开头,不是以4、7结尾的手机号码(11位) 或者 010-34567897|0311-37647326
phone = input('请输入手机号或座机:')
a = re.search(r'(1\d{9}[0-35689])|(\d{3,4}-\d{8})',phone)
if a:
print('合法!!!',phone)
else:
print('不合法!!!')
二、进程、线程
import time
from multiprocessing import Process def program():
for i in range(5):
print('写代码%d行'%i)
time.sleep(1) def listen_music():
musics = ['逆战','凉凉','麻婆豆腐','无地自容']
for music in musics:
print('正在听:{}歌'.format(music))
time.sleep(1) def weichat(user):
name = '詹姆斯'
for i in range(5):
print('{}正在和{}聊天!!'.format(user,name))
time.sleep(1) if __name__ =='__main__':
p1 = Process(target=program,name='进程1')
p2 = Process(target=listen_music,name='进程2')
# p3 = Process(target=weichat,args=['gang'])
p3 = Process(target=weichat,name='进程3',kwargs={'user':'gang'})
p1.start()
p2.start()
p3.start()
python-day16的更多相关文章
- python(day16)内置函数,匿名函数
# add = lambda x,y:x+y # print(add(1,2)) # dic={'k1':10,'k2':100,'k3':30} # def func(key): # return ...
- python day- 16 面向对象
1.类的相关知识 类:是指具有相同属性和技能的一类事物. 比如:人类 ,植物类,动物类,狗类. 对象:是类中的某一个实例,是类的具体表现. 比如:具体到某个人,某一个植物,某一条狗. class 是p ...
- Python day16 tag式整体退出技巧
在写一些服务器时,往往会多层嵌套循环,可利用tag变量实现整体退出功能,代码: tag=True while tag: print('level1') choice=input('level1> ...
- python-day16(正式学习)
目录 模块 什么是模块? 模块的四种形式 为什么要用模块 如何用模块 import from...import... 异同 循环导入问题 解决方案 1. 2. 模块搜索路径 random模块 模块 什 ...
- Python之路,Day16 - Django 进阶
Python之路,Day16 - Django 进阶 本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...
- python开发学习-day16(Django框架初识)
s12-20160507-day16 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- day16 python模块 正则表达式
day16 python 一.模块 1.什么是模块 是一组功能的集合 2.模块的类型 内置模块; python提供的, 解释器自带的 ...
- python学习-Day16
目录 今日内容详细 内置函数补充 常见内置函数 help() id() int() isinstance() pow() round() sum() 求和 迭代器 可迭代对象 什么是可迭代对象? 哪些 ...
- Python学习路程day16
Python之路,Day14 - It's time for Django 本节内容 Django流程介绍 Django url Django view Django models Django te ...
- Python之路Day16
主要内容:Django基础进阶之:Django 流程.Django URL.Django Views.Django Models.Django Template.Django Admin Django ...
随机推荐
- ISTQB名词辨析
测试规程说明(Test Procedure Specification) 规定了执行测试的一系列行为的文档,也称为测试脚本或测试剧本.
- JS实现当前页弹出窗口,且页面变灰不可操作
使用JS在当前页面在div中加载弹出窗口,并让当前页面变灰不可操作. 加载弹出窗口的div需将宽高设置成整个页面的大小,以覆盖当前页面的内容. opacity:0.6: 页面可见度设置为0.6(1为完 ...
- 数据库---T-SQL语句:查询语句(二)
>查询: 一.查询所有数据: select * from Info ---查询所有数据(行) select Name from Info ---查询特定列(Name列) select N ...
- vue.js带复选框表单的增删改查
近段时间由于公司项目要求,前端开始使用VUE框架进行开发,最近刚开始学习,做了一个表单的增删改查,和大家分享一下. 页面模型代码设计如下 <template> <div id=&qu ...
- python模块知识一 自定义模块、time、datetime时间模块
第五章 模块 1.自定义模块: 模块分类: 内置模块(标准库)-- python解释器自带的.py文件(模块) 第三方模块(各种大神写的)-- 需要额外下载(并发编程pypi) 自定义模块(自己写的) ...
- Java实现常见的排序算法
一.排序算法 常见的排序算法主要分为下面几类: 选择排序 堆排序 冒泡排序 快速排序 插入排序 希尔排序 归并排序 桶式排序 基数排序 本文主要介绍选择排序.堆排序.冒泡排序.快速排序和归并排序的原理 ...
- Android:JNI与NDK(二)交叉编译与动态库,静态库
欢迎关注公众号,第一时间获取最新文章: 本篇目录 一.前言 本篇主要以window开发环境为背景介绍一下NDK开发中需要掌握的交叉编译等基础知识,选window系统主要是照顾大多数读者,mac ,li ...
- 深入学习 Intellij IDEA 调试技巧
程序员的日常工作除了写代码之外,很大一部分时间将会在查找 BUG,解决问题.查找 BUG,离不开在 IDE 中调试代码.熟练的掌握调试技巧,可以帮助我们减少查找时间,快速定位问题. 在 IDEA 中调 ...
- canal同步MySQL数据到ES6.X
背景: 最近一段时间公司做一个技术架构的更改,由于之前使用的solr和目前的业务不太匹配,具体原因不多说啦.所以要把数据放到Elasticsearch中进行快速的搜索,这是便产生了一个数据迁移的需求, ...
- Redis优化建议
优化的一些建议 1.尽量使用短的key 当然在精简的同时,不要完了key的"见名知意".对于value有些也可精简,比如性别使用0.1. 2.避免使用keys * keys *, ...