如何分离氨基酸,数字和氨基酸串?

时间:2014-02-28 20:41:08

标签: search python-2.7 csv

现在,我有氨基酸串。 氨基酸突变栏看起来像A59M,T133G,K2 *,G1927?和?只要。 那么,我尝试使用re将一列分成三列并删除它们?只保留G1297?

import re 
AA_mut = AA_mut.replace('p.','')
m = re.search(r'^(\w+)(\d+)(\S+)$',AA_mut)

但是,我得到了 (A5,9,M; T13,3,M; ....)

请给我一些建议。 感谢

3 个答案:

答案 0 :(得分:0)

假设你有:

data = ["A59M", "T133G", "K2*", "G1927?", "?"]

您可以使用以下方式提取它:

out = [(s[0], s[1:-1], s[-1]) for s in data if len(s) > 2]

这给了我:

out == [('A', '59', 'M'), ('T', '133', 'G'), 
        ('K', '2', '*'), ('G', '1927', '?')]

答案 1 :(得分:0)

\w匹配perl中的字母和数字。它看起来像是在python中做同样的事情。

你可能会尝试更明确。这是前面的单一大写字母吗?如果是这样,你可能想要像

这样的东西
^([A-Z])(\d+)(\D+)$

在perl:

print join ("<>", m/^([A-Z])(\d+)(\D+)$/) while <DATA>;

__DATA__
A59M
T133G
K2*
G1927?
?

打印

A<>59<>M
T<>133<>G
K<>2<>*
G<>1927<>?

答案 2 :(得分:0)

import re 
AA_mut = AA_mut.replace('p.','')
m = re.search(r'^(\w)(\d+)(\S+)$',AA_mut)

我用这个来解决我的问题。原始\ w +为\ d +留下一位数,为\ S +留下一个字母。一旦我删除了“+”。它只需要第一个字母并留下其他部分。