一, 转译符

  1.python 中的转译符

    正则表达式中的内容在Python中就是字符串

    ' \n ' : \ 转移符赋予了这个n一个特殊意义,表示一个换行符

    ' \ \ n' :  \ \  表示取消了\的转译

    r  表示取消本字符串的所有转译

    在正则表达式中: '\\n'-->'\n',但是在pycharm中 \n为换行符,则需要转译 '\\n',与之匹配

      的应为 : '\\\\n'-->'\\n '

    在Python中 : r '\\n'-->r '\n'

   

   2. 正则表达式中的转义

    ' \( ' 表示匹配小括号 ; [() + * ? / $ .] 在字符组中一些特殊的字符会现原形.

    [ - ] 只写在字符组的首位的时候表示普通的 减号 / 负号写在其他位置表示范围

      如果就是想匹配减号 [1\-9]

二, re 模块

  操作匹配的字符串

  方法: findall  search  math  替换  sub subn  切割  compile  finditer

 1. 查找 

  findall : re.findall('正则表达式','字符串') 

ret = re.findall('\d+','123qwer123df')
print(ret)  #参数  返回值类型:列表  返回值个数:1  返回值内容:所有匹配的项若没有
          匹配到就是空列表 []

  

  search : re.search('正则表达式','字符串') 

ret = re.search('\d+','123qwer123df')
print(ret) #参数 返回值类型: 正则匹配结果的对象 返回值个数 : 1
如果匹配上就返回对象,没匹配上返回None
print(ret.group()) #返回的对象通过group来获取匹配到的第一个结果 

  match : re.match('正则表达式','字符串') 

ret = re.match('\d+','%^123qwer123df')
print(ret)
#结果 : None #只从头开始匹配,相当于在正则表达式前添加一个 ^

 2. 替换( replace)

  sub

ret = re.sub('\d+','H','123qwedf',1)  #把'\d+'替换成'H',指定替换一次(不指定次数全替换)
print(ret)

  subn

ret = re.subn('\d+','H','123qwedf',1)
print(ret)
#结果 ('Hqwerdf' , 1) 给出替换结果和替换的次数

 3. 切割 (split) 

ret = re.split('\d+','123qwerdf')
print(ret) #按数字切割

 4. compile  (提高时间效率)

ret = re.compile('-0\.\d+|-[1-9]\d(\.\d+)?')   #可以重复被利用 ,在多
次使用某一个相同的正则表达式的时候,compile会提高
程序的效率. re = ret.search('qwe-20df-3')
print(re.group())
#结果 -20

  5. finditer  (提高空间效率)  

ret = re.finditer('\d','123qwerdf')    #拿到一个生成器
for i in ret #拿到正则表达式对象
print(i.group())

 6. 分组优先显示

  findall 

ret =  re.findall('www.(baidu|goole).com,'www.baidu.com')
print(ret)
#结果 [] findall 会优先显示分组中的 baidu|goole 匹配内容,要想取消分
组优先,(?:正则表达式)

  split

ret = re.split('(\d+)','qwe12d34f')
print(ret) #遇到分组会保留 被切掉的内容
#结果 ['qwe','12','d','34','f']

  search

re.search('\d+(.\d+)(.\d+)?','1.2.3-2*(60+(-40.35/5))')
print(ret.group())#全部输出/即是print(ret.group(0))
print(ret.group(1))# .2 优先输出(.\d+) print(ret.group(2))# .3 
  #如果search中有分组,通过group(n)就能够拿到group中的匹配的内容

 7. 分组命名  

   (?P<name>正则表达式)  表示给分组起名字 ;  (?P=name) 表示使用分组

  当匹配的内容和 另一部分必须一样是可以使用分组命名

  前后组名必须一样才能匹配成功

  必须先定义分组才能使用分组

   

 索引方法使用分组

  \1 表示使用第一组,匹配到的内容必须和第一个组中的内容完全相同

  

三, random模块

 随机: 在某个范围内取到每一个值的概率是相同的

 1. 随机小数

  random.random()  0-1之间的随机小数

  random.uniform(1,9)  任意范围内的小数

 

 2. 随机抽取

  num = [1,2,3,'qwe',('hehe','haha')]

  random.choice(num)  随机抽取列表中一个值

  random.sample(num,2) 随机抽取列表中2(多个值)值

 

 3. 随机整数

  random.randint(1,8)  [1,8] 包含8在内的范围内随机取整数

  random.randrange(1,8)  [1,8) 不包含8在内的范围内随机取整数

  random.randrange(1,10,2) [1,8) 不包含8在内的范围内随机取奇数整数

 4. 打乱顺序

  num = [1,2,3,'qwe',('hehe','haha')]

  random.shuffle(num)  在原列表基础上打乱顺序

  

转译符,re模块,random模块的更多相关文章

  1. python常用模块——random模块

    参考博客:http://www.360doc.com/content/14/0430/11/16044571_373443266.shtml 今天突然想起python该怎么生成随机数?查了一下,贴出实 ...

  2. Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型)

    Python进阶(十)----软件开发规范, time模块, datatime模块,random模块,collection模块(python额外数据类型) 一丶软件开发规范 六个目录: #### 对某 ...

  3. Python模块01/自定义模块/time模块/datetime模块/random模块

    Python模块01/自定义模块/time模块/datetime模块/random模块 内容大纲 1.自定义模块 2.time模块 3.datetime模块 4.random模块 1.自定义模块 1. ...

  4. python-Day5-深入正则表达式--冒泡排序-时间复杂度 --常用模块学习:自定义模块--random模块:随机验证码--time & datetime模块

    正则表达式   语法:             mport re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0 ...

  5. Python:time模块/random模块/os模块/sys模块

    time 模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 python中时间日期格式化符号: %y 两位数的 ...

  6. 4-24日 collections模块 random模块 time模块 sys模块 os模块

    1, collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdi ...

  7. python 全栈开发,Day27(复习, defaultdict,Counter,时间模块,random模块,sys模块)

    一.复习 看下面一段代码,假如运行结果有问题,那么就需要在每一步计算时,打印一下结果 b = 1 c = 2 d = 3 a = b+c print(a) e = a + d print(e) 执行输 ...

  8. re模块 ,random模块

    # 在python中使用正则表达式 # 转义符 : 在正则中的转义符 \ 在python中的转义符# 正则表达式中的转义 :# '\(' 表示匹配小括号# [()+*?/$.] 在字符组中一些特殊的字 ...

  9. 常用模块(collections模块,时间模块,random模块,os模块,sys模块,序列化模块,re模块,hashlib模块,configparser模块,logging模块)

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

随机推荐

  1. JS检查输入项是否为手机号码或者固话号码的正则表达式

    var reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/; //校验手机号和固定电话 if ( !reg.test(shop_tel) || check_e ...

  2. JSP实现用户登录样例

    业务描述 用户在login.jsp页面输入用户名密码登录: 如果用户名为xingoo,密码为123,则跳转到成功界面login_success.jsp,并显示用户登录的名字: 如果用户名密码错误,则跳 ...

  3. March 6 2017 Week 10 Monday

    A well-spent day brings happy sleep. 丰盈白日,安眠晚间. Recently my sleep is not so good, for one thing I go ...

  4. Android(java)学习笔记51:ScrollView用法

    1. 理论部分 (1)ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 (2)上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 (3)上述两个控件可以互 ...

  5. Android(java)学习笔记38:Android 短信发送

    1.第一种可以调用系统内部的短信程序. 之前我曾经出现过一个bug就是报错: android.content.ActivityNotFoundException: No Activity found ...

  6. [19/03/15-星期五] 常用类_String类&StringBuilder和StringBuffer类

    一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢?  指的是对象内部的成员变量的值无法再改变.Str ...

  7. 2018.11.25 struts2与OGNL表达式的结合(高级)

    两者的结合原理 底层源码分析 栈原理 先进后出 我们的valuestack其实是一个接口 在实现类中有这个参数 CompoundRoot的类继承的是ArrayList,具体实现弹栈和压栈的方法具体实现 ...

  8. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(一) 整理基础数据

    最近碰巧发现一款比较好的Web即时通讯前端组件,layim,百度关键字即可,我下面要做的就是基于这个前端组件配合后台完成即时聊天等功能.当然用到的技术就是ASP.NET SingalR框架.本人不会c ...

  9. 整个简历的讲解(falling+mimic+refidet)

    1.解决方案 下边缘: a.论文的数据来自kitti,gt数据来自于激光雷达,利用kitti自带的开发包先将激光雷达的数据映射到图片的二维平面,每个x,y会生成对应的d(x,y),即depth.再对每 ...

  10. 关于node-sass安装失败的解决办法

    在测试gulp-webapp的时候遇到了 styles 不能被正常编译的问题,究其原因是node-sass没有被正常安装. 根本原因是国内网络的原因. 最终的解决方法是通过淘宝的npm镜像安装node ...