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

如何在python中使用正则表达式?,python,regex,Python,Regex,希望有人能提供帮助,我正在尝试使用正则表达式从模式后出现的字符串中提取一些内容,但它不起作用,我不知道为什么。正则表达式在linux中运行良好 import re s = "GeneID:5408878;gbkey=CDS;product=carboxynorspermidinedecarboxylase;protein_id=YP_001405731.1" >>> x = re.search(r'(?<=protein_id=)[^;]*',s) >>>

希望有人能提供帮助,我正在尝试使用正则表达式从模式后出现的字符串中提取一些内容,但它不起作用,我不知道为什么。正则表达式在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>
重新导入
s=“GeneID:5408878;gbkey=CDS;product=羧化去甲亚精胺羧化酶;protein_id=YP_001405731.1”
>>>x=重新搜索(r’(?在搜索结果上使用以打印捕获的组:

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

正如Martijn所指出的,您创建了一个匹配对象。正则表达式是正确的。如果它是错误的,
print(x)
将打印
None
在搜索结果上使用以打印捕获的组:

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


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

你可能应该考虑重新编写你的正则表达式,这样你就可以找到所有的对,这样你就不必纠结于特定的组和硬编码的后面

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

你可能应该考虑重新编写你的正则表达式,这样你就可以找到所有的对,这样你就不必纠结于特定的组和硬编码的后面

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

这就是我离开连接性所得到的。@MartijnPieters我提到过你:)。我仍然尊敬你是一位伟大的蟒蛇大师:这就是我离开连接性所得到的。@MartijnPieters我提到过你:)。我仍然尊敬您,您是一位伟大的Python大师:如果去掉了主要的GeneID,您可以创建一个键/值对的dict,并避免使用正则表达式
dict(fragment.split(“=”)对于s.split(“;”)中的fragment(“=”)
您是否阅读了有关如何使用
re
的文档?如果去掉了前导GeneID,您可以创建键/值对的dict,并避免使用正则表达式
dict(s.split(“;”)中的fragment.split(“=”)
您是否阅读了有关如何使用
re
的文档?