我有一个带有标题的fasta文件,其中包含序列名称和长度
>1 9081 bp
gcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga
我需要删除名称后面的所有内容" 1"并尝试通过以下方式在python中执行此操作:
newfile.write(oldfile.replace("bp",""))
这将删除" bp"但我现在还有数字。
>1 9081
gcgcccgaacagggacttgaaagcgaaagagaaaccagagaagctctctcgacgcagga
如何指定术语:任何后跟bp的字符都不能替换。我试过*** bp或--- bp或... bp,但那些不能工作。
谢谢! Radwa
答案 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