2014-02-28 3 views
0

지금은 아미노산 문자열이 있습니다. 아미노산 돌연변이 열은 다음과 같습니다. A59M, T133G, K2 *, G1927? 그리고? 만. 그래서 re를 사용하여 하나의 열을 3 개의 열로 분리하고 제거하려고했습니다. 그래도 G1297을 유지 하시겠습니까?아미노산, 수 및 아미노산 문자열을 분리하는 방법?

나에게 몇 가지 조언을 부탁드립니다

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

는, 나는 (; T13,3, M .... A5,9, M)를 얻었다. 당신을 가정 감사

답변

0

\w 일치의 문자와 숫자를. 파이썬에서 같은 일을하는 것처럼 보입니다.

더 노골적인 시도가있을 수 있습니다. 전면에 하나의 대문자가 있습니까?

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

__DATA__ 
A59M 
T133G 
K2* 
G1927? 
? 

인쇄

A<>59<>M 
T<>133<>G 
K<>2<>* 
G<>1927<>? 
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', '?')] 
0
import re 
AA_mut = AA_mut.replace('p.','') 
m = re.search(r'^(\w)(\d+)(\S+)$',AA_mut) 

내 문제를 해결하기 위해이 하나를 사용 : 그래서 아마 당신은 펄에서

^([A-Z])(\d+)(\D+)$ 

같은 것을합니다. 원본 \ w +는 \ d +에 대해 한 자리와 \ S +에 대한 한 자리를 남깁니다. 일단 "+"를 제거했습니다. 첫 번째 알파벳 만 사용하고 다른 부분은 남겨 둡니다.

관련 문제