提取单词直到某个符号
Extract word uptill certain symbol
嗨,我有这个 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)
贪婪版本:
(?:注=).*(?:;)
None贪心版:
(?:注=).*?(?:;)
匹配'Note='但不捕获它。匹配并捕获所有其他字符,直到遇到分号。匹配分号但不捕获它。
贪婪版本捕获到最后一个分号。
None 贪婪版本捕获到第一个分号。
嗨,我有这个 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)
贪婪版本:
(?:注=).*(?:;)
None贪心版:
(?:注=).*?(?:;)
匹配'Note='但不捕获它。匹配并捕获所有其他字符,直到遇到分号。匹配分号但不捕获它。
贪婪版本捕获到最后一个分号。
None 贪婪版本捕获到第一个分号。