zoukankan      html  css  js  c++  java
  • REGEX例子

    作为REGEX的例子,代码9.3显示了一个给定的文件有多少行,具有给定的模式,通过命令行输入(注:有更有效率的方式来实现这个功能,如Unix下的grep命令,在这里只是给出了另一种方式)。这个程序像下面这样执行:

    program_name.py file_name pattern

    这里file_name是文件的名字,pattern是需要查找的模式:

    列表9.3:计算多少行包含有一个用户给定的模式
    1 import re,sys
    2 rgx = re.compile(sys.argv[2])
    3 counter = 0
    4 with open(sys.argv[1]) as fh :
    5 for line in fh:
    6 if rgx.search(line):
    7 counter += 1
    8 print (counter)

    这个脚本没有记录有多少模式的单词在文件中出现。如果一个单词在同一行中出现多于一次,它只记为一次。下面的脚本对给定模式所有出现进行计数:

    1 import re, sys
    2 rgx = re.compile(sys.argv[2])
    3 counter = 0
    4 with open(sys.argv[1]) as fh:
    5     for line in fh:
    6         ####这一句要不要都行"if rgx.findall(line):"
    7         counter += len(rgx.findall(line))
    8             
    9 print (counter)

    re.sub

    sub(rpl,str[,count=0]): 把rpl替换为字符串(str)来与它定义的REGEX一致。第三个参数是可选的,表示我们想要替代多少次,而默认值是零,这意味着,它取代了所有的出现。这与字符串的replace方法是非常相似,只是后者更换为另一个文本,而不是替换位于一个REGEX的文字。

    列表 9.5 删除GC重复(多余三个GC的行)
    1 import re
    2 rgx = re.compile("(?:GC){3,}")
    3 seq = "ATGATCGTACTGCGCGCTTCATGTGATGCGCGCGCGCAGACTATAAG"
    4 print ("Before:%s" %seq)
    5 print ("After: %s" %rgx.sub("",seq))   ####这里 rgx.sub("",seq) 会自动返回被替换后的新字符串。

    这个程序的产物是

    Before: ATGATCGTACTGCGCGCTTCATGTGATGCGCGCGCGCAGACTATAAG

    After: ATGATCGTACTTTCATGTGATAGACTATAAG

    re.subn

    subn(rpl,str[,count=0]): 它具有和sub相同的功能,唯一不同是不返回新的字符串,而是返回一个元组,有两个元素:新的字符串和替代数目。当除了替换字符串中的一个模式,还需要知道多少替换已作出时使用此函数。

    re.sub和re.subn的区别如下:

    >>> seq
    'ATATAAGATGCGCGCGCTTATGCGCGCA'

    >>> regex = re.compile("(?:GC){3,}")
    >>> regex.subn("",seq)
    ('ATATAAGATTTATA', 2)

    >>> regex.sub("",seq)
    'ATATAAGATTTATA'

    就是说re.subn除了返回新的字符串之外,还会返回被替换的数目。

  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/nklzj/p/6260130.html
Copyright © 2011-2022 走看看