嗨,我有这个uniprot gff数据,看起来像
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
| Entry | check | start | end | Domains |
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
| O75581 | Repeat | 63 | 106 | Note=LDL-receptor class B 1 |
| O75581 | Repeat | 150 | 193 | Note=LDL-receptor class B 3 |
| O75581 | Domain | 282 | 324 | Note=EGF-like 1 |
| O75581 | Domain | 1248 | 1286 | Note=LDL-receptor class A 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| O75581 | Domain | 1287 | 1323 | Note=LDL-receptor class A 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| O75581 | Domain | 1325 | 1361 | Note=LDL-receptor class A 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00124 |
| P13688 | Domain | 35 | 142 | Note=Ig-like V-type;Ontology_term=ECO:0000250;evidence=ECO:0000250|UniProtKB:P31997 |
| P13688 | Domain | 145 | 232 | Note=Ig-like C2-type 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P13688 | Domain | 237 | 317 | Note=Ig-like C2-type 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P13688 | Domain | 323 | 413 | Note=Ig-like C2-type 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00114 |
| P19022 | Domain | 160 | 267 | Note=Cadherin 1;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| P19022 | Domain | 268 | 382 | Note=Cadherin 2;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| P19022 | Domain | 383 | 497 | Note=Cadherin 3;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00043 |
| Q13586 | Domain | 132 | 200 | Note=SAM;Ontology_term=ECO:0000255;evidence=ECO:0000255|PROSITE-ProRule:PRU00184 |
| P04629 | Repeat | 90 | 113 | Note=LRR 1 |
| P04629 | Repeat | 116 | 137 | Note=LRR 2 |
+--------+--------+-------+------+------------------------------------------------------------------------------------------------------+
我正在尝试提取域名列df['Domains]
。使用以下代码,我接近域名的前2个3个字,但不能普遍使用。
for row in df['Domains']:
print(re.findall(r'Note=(\w*)(.?)(\w*)', row))
给出类似这样的内容
[('LDL', '-', 'receptor')]
[('LDL', '-', 'receptor')]
[('EGF', '-', 'like')]
[('Ig', '-', 'like')]
[('Ig', '-', 'like')]`
因此,我希望更改方法,使所有内容都在Note=
之后开始,并在;
之前或行尾结束。我怎么能得到这个?
您能不能尝试以下操作。
for row in df['Domains']:
print(re.findall(r'Note=([^;]*)', row))
for row in df['Domains']:
phrase = re.findall('.*;', row)
if len(phrase) > 0:
print(phrase[0])
else:
print(row)