如何在python中使用正则表达式?

时间:2013-07-07 12:14:16

标签: python regex

希望有人可以提供帮助,我正在尝试使用正则表达式从模式之后的字符串中提取某些东西,但它不起作用,我不知道为什么。正则表达式在linux中运行良好......

import re
s = "GeneID:5408878;gbkey=CDS;product=carboxynorspermidinedecarboxylase;protein_id=YP_001405731.1"
>>> x = re.search(r'(?<=protein_id=)[^;]*',s)
>>> print(x)
<_sre.SRE_Match object at 0x000000000345B7E8>

2 个答案:

答案 0 :(得分:8)

在搜索结果上使用.group()来打印捕获的组:

>>> print(x.group(0))
YP_001405731.1

正如Martijn 已经指出,你创建了一个匹配对象。正则表达式是正确的。如果错误,print(x)会打印None

答案 1 :(得分:4)

您应该考虑重新编写正则表达式,以便找到所有对,这样您就不必使用特定的组和硬编码的外观... ...

import re
kv = dict(re.findall('(\w+)=([^;]+)', s))
# {'gbkey': 'CDS', 'product': 'carboxynorspermidinedecarboxylase', 'protein_id': 'YP_001405731.1'}
print kv['protein_id']
# YP_001405731.1