如何从一行中提取标记字符串(python)

0 投票
2 回答
1435 浏览
提问于 2025-04-15 21:12

我的朋友们,

我在这个问题上花了不少时间……但还没找到更好的解决办法。我是在用Python编程。

这里有一行我正在处理的文件中的文本,比如:

">ref|ZP_01631227.1| 3-dehydroquinate synthase [Nodularia spumigena CCY9414]..."

我该怎么从这一行中提取出两个字符串“ZP_01631227.1”和“Nodularia spumigena CCY9414”呢?

这对“| |”和括号就像是标记,让我们知道想要获取它们之间的字符串……

我想我可以逐个字符地遍历这一行,虽然这样做也能实现,但实在是太麻烦了……我在想有没有什么Python库或者其他聪明的方法可以更简单地做到这一点?

谢谢大家!

2 个回答

4

一个简洁的替代方案是使用正则表达式(不知道为什么,在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
>>> 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

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答