Как извлечь пару отмеченных строк из строки (python) - PullRequest
0 голосов
/ 04 апреля 2010

Мои друзья,

Я потратил довольно много времени на это ... но пока не могу найти лучший способ сделать это. Кстати, я пишу на python.

Итак, вот строка текста в файле, с которым я работаю, например:

"> ref | ZP_01631227.1 | 3-дегидрохинатсинтаза [Nodularia spumigena CCY9414] ..."

Как я могу извлечь две строки "ZP_01631227.1" и "Nodularia spumigena CCY9414" из строки?

пары "| |" и скобки похожи на маркеры, поэтому мы знаем, что хотим вставить строки между двумя ...

Полагаю, я могу перебрать все символы в строке и сделать это трудным путем. Это просто занимает много времени ... Хотите знать, есть ли библиотека Python или другие разумные способы сделать это красиво?

Спасибо всем!

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010

Одной из кратких альтернатив является регулярное выражение (по какой-то причине у них плохая репутация в сообществе Python, но они обеспечивают краткость и мощь для простой обработки текста):

import re
s = ">ref|ZP_01631227.1| 3-dehydroquinate synthase [Nodularia spumigena CCY9414]..."
mo = re.search(r'\|(.*?)\|/*\[(.*?)\]', s)
if mo:
  thefirst, thesecond = mo.groups()
1 голос
/ 04 апреля 2010
>>> for line in open("file"):
...     if "|" in line:
...         whatiwant_1=line.split("|")[1]
...         if "[" in line:
...             whatiwant_2=line.split("[")[1].split("]")[0]
...
>>> print whatiwant_1 , whatiwant_2
ZP_01631227.1 Nodularia spumigena CCY9414
...