提取单词uptill特定符号

2024-09-28 22:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我有这个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]。使用下面的代码,我很快就能得到域名的前23个单词,但并不普遍有效

for row in df['Domains']:
    print(re.findall(r'Note=(\w*)(.?)(\w*)', row))

这样的话

[('LDL', '-', 'receptor')]
[('LDL', '-', 'receptor')]
[('EGF', '-', 'like')]
[('Ig', '-', 'like')]
[('Ig', '-', 'like')]`

所以,我希望改变我的方法,让一切在Note=之后开始,在;之前结束,或者在行尾结束。我怎样才能得到这个


Tags: domainclasslikenoteontologyrepeattermig
3条回答
for row in df['Domains']:
    phrase = re.findall('.*;', row)
    if len(phrase) > 0:
        print(phrase[0])
    else:
        print(row)

你能试试下面的吗

for row in df['Domains']:
    print(re.findall(r'Note=([^;]*)', row))

贪婪版本:

(?:注=).*(:;)

无贪婪版本:

(?:注=).*(?:;)

匹配“Note=”但不捕获它。匹配并捕获所有其他字符,直到得到分号。匹配分号,但不要捕获它

贪婪版本捕获到最后一个分号

在第一个分号之前,无贪婪版本捕获

相关问题 更多 >