我正在学习python,我想在不使用BioPython的情况下解析fasta文件.我的txt文件看起来像:
>22567
CGTGTCCAGGTCTATCTCGGAAATTTGCCGTCGTTGCATTACTGTCCAGCTCCATGCCCA
ACATTTGGCATCGGAGAATGACTCCGCGTGATAAAGTCAGAATAGGCATTGAGACTCAGG
GTGGTACCTATTA
>34454
AAAACTGTGCAGCCGGTAACAGGCCGCGATGCTGTACTATATGTGTTTGGTACATATCCG
ATTCAGGTATGTCAGGGAGCCAGCACCGGAGGATCCAGAAGTAAGTCGGGTTGACTACTC
CTAGCCTCGTTTCACCATCCGCCGGATAACTCTCCCTTCCATCATCAACTCCTCCCTTTC
GTGTCCAATGGGGCGGCGTGTCTAAGCACTGCCATATAGCTACCGAAAGGCGGCGACCCC
TCGGA
Run Code Online (Sandbox Code Playgroud)
我想解析这个以保存每个序列的标题,> 22567和> 34454到标题列表(这是有效的).并且在每个标题之后读取下面的序列到序列列表中.
输出,我想看起来像:
headers = ['>22567','>34454']
sequences = ['CGTGTCCAGGTCTATCTCGGAAATT...', AAAACTTTGTGAAAA....']
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是当我尝试读取序列部分时,我无法弄清楚如何将每一行连接成一个序列字符串,然后再将其附加到列表中.相反,我拥有的每一行都附加到序列列表中.
我到目前为止的代码是:
#!/usr/bin/python
import re
dna = []
sequences = []
def read_fasta(filename):
global seq, header, dna, sequences
#open the file
with open(filename) as file:
seq = ''
#forloop through the lines
for line in file:
header = re.search(r'^>\w+', line)
#if line contains the header '>' then append it to the dna list
if header:
line = line.rstrip("\n") …Run Code Online (Sandbox Code Playgroud) 我很抱歉这必须是使用词典的基本问题.我正在学习python,我的目标是比较两个词典并从两个相同的条目中恢复Key和Value条目.据我所知,字典中的顺序与列表中的顺序无关.但我采用了一个代码来比较我的词典,我只是想确保词典的顺序无关紧要.
我到目前为止编写的代码是:
def compare_dict(first,second):
with open('Common_hits_python.txt', 'w') as file:
for keyone in first:
for keytwo in second:
if keytwo == keyone:
if first[keyone] == second[keytwo]:
file.write(keyone + "\t" + first[keyone] + "\n")
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激.我为上面的代码中的冗余道歉.但是,如果有人能够确认以这种方式比较两个字典并不要求密钥处于相同的顺序就会很好.其他编写函数的方法也非常受欢迎.