正则表达式替换(如果找到模式替换符号的符号)

时间:2015-11-03 13:30:07

标签: python regex python-2.7 replace

我有几行文本(RNA序列),我想制作一个关于字符保存的矩阵,因为它们是根据相似性排列的。

但是我有几个空白(-),这实际上意味着错过整个结构(例如#- > 100)如果发生这种情况我想改变点(用于进行区分的其他符号)与发现相同数量。

我以为我可以用正则表达式做到这一点,但是我无法仅替换模式,或者当我这样做时,我会更换所有内容,但是点数不正确。

我的代码如下所示:

with alnfile as f_in:
     if re.search('-{100,}', elem,):
            elem = re.sub('-{100,}','.', elem, ) #failed alternative*len(m.groups(x)), elem)
            print len(elem)  # check if I am keeping the lenghth of my sequence
            print elem[0:100]  # check the start

            f1.write(elem)

如果我的文件是:

ONE ----(*100)atgtgca----(*20)

我得到了:

ONE ..(*100)atgtgca----(*20)

我的另一个变化只是点数,然后我得到:

ONE ....(*100)atgtgca....(*20)

我需要什么:

ONE ....(*100)atgtgca----(*20)

我知道我错过了一些东西,但我无法弄明白?是否有旗帜或其他东西可以帮助我或者允许对此进行确切更改?

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

data = "ONE " + "-" * 100 + "atgtgca" + "-" * 20
print re.sub(r'-{100,}', lambda x: '.' * len(x.group(0)), data)

这会显示:

ONE ....................................................................................................atgtgca--------------------