zoukankan      html  css  js  c++  java
  • 转译符,re模块,random模块

    一, 转译符

      1.python 中的转译符

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

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

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

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

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

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

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

       

       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)  在原列表基础上打乱顺序

      

  • 相关阅读:
    [QML] Connections元素介绍
    Common Lisp语言快速入门
    DataGrid模板列取值问题
    DataGrid 中使用 复选框(CheckBox) 删除纪录
    SQL SELECT INTO
    SQL中Case的使用方法(上篇)
    SQL中Case的使用方法(下篇)
    C# ArrayList的用法
    关于 <customErrors> 标记的“mode”属性设置为“Off”的问题的解决方案
    SQL SERVER 中identity
  • 原文地址:https://www.cnblogs.com/panda-pandeyong/p/9438522.html
Copyright © 2011-2022 走看看