删除字符串中的字符

时间:2017-03-28 17:04:55

标签: python

我有一个带有标题的fasta文件,其中包含序列名称和长度

>1 9081 bp 
gcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga

我需要删除名称后面的所有内容" 1"并尝试通过以下方式在python中执行此操作:

newfile.write(oldfile.replace("bp",""))

这将删除" bp"但我现在还有数字。

>1 9081
gcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga

如何指定术语:任何后跟bp的字符都不能替换。我试过*** bp或--- bp或... bp,但那些不能工作。

谢谢! Radwa

1 个答案:

答案 0 :(得分:0)

您应该为此目的使用正则表达式。

试试这个(假设您的文件名可能包含多于1个字符,并且可能包含数字和字母):

import re

regex = re.compile(r'(^\w+)\s.*', re.DOTALL)
print(regex.sub(r'\1', '1 9081 bp\ngcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga' ))
print(regex.sub(r'\1', 's12d 9081 bp\ngcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga' ))

输出:

1 
s12d