извлечение строк с использованием регулярного выражения - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть следующие строки:

  1. БЕЛК НИЗКОГО КАЧЕСТВА: 5-подобные цистеин протеиназы [Solanum pennellii]
  2. ПРОГНОЗ: БЕЛК НИЗКОГО КАЧЕСТВА: нехарактеризованный белок LOC107059219 [Solanum pennellii]
  3. XP_019244624.1 ПРОГНОЗИРУЕТСЯ: пероксидаза 40-подобная [Nicotiana аттенуата]
  4. RVW92024.1 Ретровирусный полипротеин Pol из транспозона TNT 1-94 [Vitis vinifera]
  5. гипотетическийпротеин VITISV_035070 [Vitis vinifera]

Как извлечь следующие строки из вышеуказанных строк?

  1. цистеинпротеиназа 5-подобная
  2. нехарактеризованный белок LOC107059219
  3. пероксидаза 40-подобная
  4. Ретровирусный полипротеин Pol из транспозона TNT 1-94
  5. гипотетический белок VITISV_035070

Заранее спасибо,

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Я думаю, что эта проблема не нуждается в регулярных выражениях.Я бы предпочел следующее решение, потому что это легко понять

st = "PREDICTED: LOW QUALITY PROTEIN: uncharacterized protein LOC107059219 [Solanum pennellii]"
st.split(":")[-1].split("[")[0].strip()
0 голосов
/ 20 сентября 2019
s = '''LOW QUALITY PROTEIN: cysteine proteinase 5-like  [Solanum pennellii]
PREDICTED: LOW QUALITY PROTEIN: uncharacterized protein LOC107059219 [Solanum pennellii]
XP_019244624.1 PREDICTED: peroxidase 40-like [Nicotiana attenuata]
RVW92024.1 Retrovirus-related Pol polyprotein from transposon TNT 1-94 [Vitis vinifera]
hypothetical protein VITISV_035070 [Vitis vinifera]'''

import re
rgx = '(:?)\s([\w\s-]+)\s(\[.+\])'

list1 = []
for m in re.findall(rgx, s):
    list1.append(m[1])

print(list1)

Вывод

['cysteine proteinase 5-like ',
 'uncharacterized protein LOC107059219',
 'peroxidase 40-like',
 'Retrovirus-related Pol polyprotein from transposon TNT 1-94',
 'hypothetical protein VITISV_035070']

Найдите подробное объяснение https://regex101.com/r/HATKMa/1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...