Python захват строки - PullRequest
       0

Python захват строки

0 голосов
/ 31 марта 2020

У меня есть следующий пример абзаца:

Some paragraph contents 
email address: 1234532@aol.com
seq_id : 1234567 

Строка seq_id может содержать следующие возможные шаблоны. Всегда будет : с префиксом seq, SEQ, seq_id, SEQ_ID, et c., И мне просто нужны цифры после :, который равен 1234567, но не идентификатор электронной почты, который может иметь одинаковые или разные цифры.

seq id:1234567
seq_id : 1234567
seq_iD : 1234567
seq_iD:1234567
seq_ID: 1234567

До сих пор я пытался сохранить это как список и проверял, является ли слово di git, но это также возвращает true для данных идентификатора электронной почты.

Иногда я получаю id:1234567 как слово, которое делает его не обнаруживаемым как ди git.

Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Вы можете сделать это с помощью регулярного выражения.

import re
s = "some string or data input, in this case your paragraph" 
re.match('seq(?:[_\s]id\s?):\s?(\d+)', s, flags=re.IGNORECASE).group(1)

Это игнорирует регистр, затем практически везде ищет интервал между оптинами и помещает все цифры в группу, которая возвращается group(1)

. Вы можете проверить регулярное выражение и * 1007. * посмотреть, как он работает в интерактивном режиме :

Обновление для обработки пропущенных пробелов в запросе:

Например: Seq Id:1234567 не работает с регулярным выражением выше.

Измените регулярное выражение на: seq(?:[_?\s?]id\s?):\s?(\d+)

1 голос
/ 31 марта 2020
#!/usr/bin/python3
import re
para = "seq id:1234567 seq_id : 1234567 seq_iD : 1234567 seq_iD:1234567 seq_ID: 1234567"
r = re.compile("[sS][eE][qQ](?:[_\s][iI][dD]\s?):\s?(\d+)")
r.findall(para)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...