Регулярное выражение, соответствующее определенному числу символов + регулярное выражение с римскими цифрами - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно извлечь названия генов и хромосом из строк ввода пользователя.Линии таковы:

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 = Chr I. Однако он продолжает возвращаться:

'NoneType' object has no attribute 'group'

1 Ответ

1 голос
/ 14 мая 2019

Использование:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...