我有几行文本(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)
我知道我错过了一些东西,但我无法弄明白?是否有旗帜或其他东西可以帮助我或者允许对此进行确切更改?
答案 0 :(得分:1)
您可以尝试以下方法:
data = "ONE " + "-" * 100 + "atgtgca" + "-" * 20
print re.sub(r'-{100,}', lambda x: '.' * len(x.group(0)), data)
这会显示:
ONE ....................................................................................................atgtgca--------------------