我需要从用户输入的行中提取基因和染色体的名称。行是这样的:
YAL002W VPS8 SGDID:S000000002,Chr I从143707-147531, 基因组版本64-2-1
基因名称是该行中的第二个“单词”(= 3个大写字母,从A到Z,后跟0至9的数字)。染色体是“ Chr”,后跟罗马数字。我正在尝试使用正则表达式来做到这一点。
我正在尝试使用正则表达式来执行此操作。
这是我的代码的一部分。
import sys
import re
sequence = sys.stdin.readlines()
ref_d = {}
temp_genename = None
temp_chrname = None
genename_pattern = '^([A-Z]{3})([0-9]{1})$'
chr_pattern = 'Chr (?=[MDCLXVI)M*(C[MD]|D?C*)(X[CL]|L?X*)(I[XV]|V?|*)$
m1 = re.search(genename_pattern, sequence)
m2 = re.search(chr_pattern, sequence)
print(m1.group())
print(m2.group())
从上面的输入中,我希望我的代码返回m1 = VPS8和m2 = ChrI。但是,它一直在返回:
'NoneType' object has no attribute 'group'
答案 0 :(得分:1)
使用:
import re
sequence = "YAL002W VPS8 SGDID:S000000002, Chr I from 143707-147531, Genome Release 64-2-1"
genename_pattern = r'\b([A-Z]{3}\d)\b' #Upper Case 3 letters, single digit.
chr_pattern = 'Chr\s+(.*?)\s+' #Get string after Chr until space
m1 = re.search(genename_pattern, sequence)
m2 = re.search(chr_pattern, sequence)
print(m1.group(1))
print(m2.group(1))
输出:
VPS8
I