如何从一行中提取标记字符串(python)
我的朋友们,
我在这个问题上花了不少时间……但还没找到更好的解决办法。我是在用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
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。