现在,我有氨基酸串。 氨基酸突变栏看起来像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; ....)
请给我一些建议。 感谢
答案 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 +留下一个字母。一旦我删除了“+”。它只需要第一个字母并留下其他部分。