我正在尝试重新格式化我的数据:
GI | 492845765 | REF | 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 | REF | WP_022448665.1 | dNA(胞嘧啶-5 - ) - 甲基转移酶[Roseburia sp。 CAG:303]
我如何编写正则表达式来重命名我的所有数据,以便生物体名称在前面,gi数字在下面,其他一切都被删除了?
答案 0 :(得分:2)
这可能就是你所要求的:
(\w+\|\d+\|)(?:.*\s)(\[\S*)(?:\s)(.+\])
使用\2\3\1
作为替换模式,$2$3$1
似乎也一样。
re.sub(r'(\w+\|\d+\|)(?:.*\s)(\[\S*)(?:\s)(.+\])', \2\3\1, line)