正则表达式替换(如果发现模式替换为符号符号)
我有几行文本(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)
我知道我失去了一些东西,但我无法弄清楚?有没有一个国旗或东西可以帮助我,或者是否会允许这样做的确切变化?
你可以尝试以下方法:
data = "ONE " + "-" * 100 + "atgtgca" + "-" * 20
print re.sub(r'-{100,}', lambda x: '.' * len(x.group(0)), data)
这将显示:
ONE ....................................................................................................atgtgca--------------------
...我不明白lambda x的用法吗? – Nelly
我认为你没有正确复制它,你有'X'和'x',它们需要是相同的。我建议你复制/粘贴屏幕。 –
'lambda'只是用来作为一种抛弃功能。它可以用一个单独的功能替换。 –
什么是'x' ???? –
对不起,这是一个尝试: m = re.search(' - {100,}',elem,) x(1,len(m.groups(x)))....但是,不工作(我应该拿掉) – Nelly
你知道' - {100,}'匹配100个连字符吗?你想替换这些子字符串吗? –