Как извлечь несколько запросов с регулярным выражением в python? - PullRequest
0 голосов
/ 19 марта 2020

У меня есть строка, из которой я хочу извлечь определенные слова, и я использовал регулярное выражение Python, но, к сожалению, я получаю только одно слово из всех совпадений.

Вот моя строка ввода

go = "GO:0030054^cellular_component^cell junction`GO:0005813^cellular_component^centrosome`GO:0036064^cellular_component^ciliary basal body`GO:0005737^cellular_component^cytoplasm"

Вот мое регулярное выражение, которое я пробовал

go_search = re.search(r'(GO:\d+)', go, re.MULTILINE|re.IGNORECASE)

Но единственный вывод, который я получил, это

go_search.group(1)
'GO:0030054'

Как я могу получить все 4 GO идентификатора (GO: 0005813, GO: 0036064 и GO: 0005737), а не только тот, который я только что получил

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Вам нужно re.findall вместо re.search:

re.findall(r'GO:\d+', go, re.MULTILINE|re.IGNORECASE)
# ['GO:0030054', 'GO:0005813', 'GO:0036064', 'GO:0005737']
1 голос
/ 19 марта 2020

Заменить re.search() на re.finditer(). Это дает вам итератор для совпадений.

go = "GO:0030054^cellular_component^cell junction`GO:0005813^cellular_component^centrosome`GO:0036064^cellular_component^ciliary basal body`GO:0005737^cellular_component^cytoplasm"
go_search_iter = re.finditer(r'(GO:\d+)', go, re.MULTILINE|re.IGNORECASE)

for go_search in go_search_iter:
    print(go_search.group(1))
    # do stuff with go_search
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...