正则表达式匹配一定数量的字符+正则表达式与罗马数字

2024-09-30 20:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从用户输入的行中提取基因和染色体的名称。线条如下:

YAL002W VPS8 SGDID:S000000002, Chr I from 143707-147531, Genome Release 64-2-1

基因名是行中的第二个“单词”(=从A到Z的3个大写字母,后跟从0到9的数字)染色体是“Chr”,后跟罗马数字。我试着用regex来做这个。你知道吗

我试着用regex来做这个。你知道吗

这是我代码的一部分。你知道吗

 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'

Tags: 代码importresys基因groupregexpattern
1条回答
网友
1楼 · 发布于 2024-09-30 20:29:41

用途:

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

相关问题 更多 >