繁体   English   中英

如何在带有不同数量空白的python中使用正则表达式

[英]How to use regex in python with varying amounts of white spaces

我试图在这里重新格式化我的数据:

GI | 492845765 |裁判| WP_005999719.1 | DNA甲基转移酶[[Eubacterium infirmum]

[真杆菌] infirmum] GI | 492845765 |

也就是说,我只想保留gi号和生物名称(在gi号前面加上生物名称),并删除“额外”信息(在这种情况下,参考号和“ DNA甲基转移酶” )。

我会做re.sub(r“(\\ w + | \\ w + |)\\ w + | \\ w_ \\ w | \\ s \\ w + \\ s \\ w \\ s([。]),\\ 2 \\ 1,行)

(或类似的东西)

但是,我的数据的其他几行在“额外”信息中有两个以上的单词。 例:

GI | 548229945 |裁判| WP_022448665.1 | dNA(Cytosine-5-)-methyltransferase [Roseburia sp。 CAG:303]

我将如何编写一个正则表达式来重命名我的所有数据,以使有机体名称位于最前面,gi编号位于其下,其他所有内容都被删除?

这可能会满足您的要求:

(\w+\|\d+\|)(?:.*\s)(\[\S*)(?:\s)(.+\])

使用\\2\\3\\1作为替换模式, $2$3$1似乎相同。

re.sub(r'(\w+\|\d+\|)(?:.*\s)(\[\S*)(?:\s)(.+\])', \2\3\1, line)

例如: http//regex101.com/r/aP6lB9

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM