gpt4 book ai didi

python - 如何对文件中的多个字符串进行多次修改并输出到新文件

转载 作者:行者123 更新时间:2023-12-01 05:43:28 26 4
gpt4 key购买 nike

我是 pythong 编程新手,并且有一个 fasta 文件,我想解析该文件以在特定软件中使用。该文件包含两行:1) 序列标识符和分类法,以空格分隔,分类法中的最后一个物种名称也可能包含空格,2) dna 序列(参见下面的示例):

>123876987 Bacteria;test;test;test test test
ATCTGCTGCATGCATGCATCGACTGCATGAC
>239847239 Bacteria;test;test;test1 test1 test1
ACTGACTGCTAGTACGATCGCTGCTGCATGACTGAC

经过一番努力和一些帮助,我成功地将我的 fasta 文件解析为仅显示序列 ID 和分类的分类文件:

123876987 Bacteria;test;test;test test test
239847239 Bacteria;test;test;test1 test1 test1

但是,我使用的软件需要以特殊方式格式化分类文件。分类文件的内容必须:1)删除 fasta 文件中的“>”,2)用制表符将标识符和分类与每个序列标题分开(即替换字符串中第一次出现的空格)通过制表符),3)将分类字符串中的所有空格替换为“_”,并用分号结束分类(参见下面的示例):

123876987    Bacteria;test;test;test_test_test;
239847239 Bacteria;test;test;test1_test1_test1;

我一直在尝试通过摆弄我的工作脚本来做到这一点:

with open("test.fasta", "r") as fasta, open("test.tax", "w") as tax:
while True:
SequenceHeader= fasta.readline()
Sequence= fasta.readline()
if SequenceHeader == '':
break
tax.write(SequenceHeader.replace('>', ''))

修改它:

with open("test.fasta", "r") as fasta, open("clean_corrected.tax", "w") as tax:
while True:
SequenceHeader= fasta.readline()
Sequence= fasta.readline()
old = {'>',' '}
new = {'','_'}
CorrectedHeader = SequenceHeader.replace('old','new')
if SequenceHeader == '':
break
tax.write(CorrectedHeader)

但这根本不起作用。有谁知道我该怎么做?

非常感谢您的帮助!

最佳答案

以下应该有效:

with open("test.fasta", "r") as fasta, open("test.tax", "w") as tax:
for line in fasta:
if line.startswith('>'):
line = line[1:] # remove the '>' from start of line
line = line.replace(' ', '\t', 1) # replace first space with a tab
line = line.replace(' ', '_') # replace remaining spaces with '_'
line = line.strip() + ';\n' # add ';' to the end
tax.write(line) # write to the output file

关于python - 如何对文件中的多个字符串进行多次修改并输出到新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16863063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com