"""将多行文件转换为一行 例: >001 AAGTCCGGTAA GGCTAGCTAAC TTCGAACGACA >002 GGCTAGCATGA CACATCGACAC CAGTAGCATCT 转换为: >001 AAGTCCGGTAAGGCTAGCTAACTTCGAACGACA >002 GGCTAGCATGACACATCGACACCAGTAGCATCT """ fr=open('test2.fasta', 'r') fw=open('out.fasta', 'w') seq={} for line in fr:
if line.startswith('>'): #判断字符串是否以‘>开始’ name=line.split()[0] #以空格为分隔符,并取序列为0的项。 seq[name]='' else: seq[name]+=line.replace('\n', '') fr.close() for i in seq.keys(): fw.write(i) fw.write('\n') fw.write(seq[i]) fw.write('\n') fr.close()
##上述步骤中顺便构建了序列名和序列的字典seq。
#假如要选择指定的ID序列,
for i in seq.keys(): if i.startswith('>chr1|hos107.1'): #该行命令的添加,可以输出指定ID的序列。 fw.write(i) fw.write('\n') fw.write(seq[i]) fw.write('\n') fr.close()