我正在阅读格式的大型基因文件
>GeneID
ACTCTCTCTATATATATATAT\n
GCTCTGCTTCTAGAGAGAGTG\n
TCTATTTGTTTATATATCTTT\n
>GeneID
GCTCTGCTTCTAGAAATTCCC\n
ACTCTGTATATATTTTCAAAA\n
GCTCTGCTTCTAGAGAGAGTG\n
每个基因都以 > 开头,然后是唯一的 ID。之后是该基因的核苷酸线。不幸的是,这个文件的生成使得每行序列之间都有换行符。
我需要在每个序列中读取一个连续的字符串。所以,我一直在使用下一种方法(如下图)。
for line in filer:
if line.startswith(">"):
# Find Sequences
seq_seg = next(filer)
seq = ""
# Concatenate lines until find next gene
while not (seq_seg.startswith(">")):
seq += seq_seg.strip() # Get rid of '\n'
seq_seg = next(filer)
我发现我的脚本只提取了文件中的一半基因,因为当在导致 while 循环失败的条件下调用 next 时,文件指针指向下一个基因 ID,然后当 for 的下一次迭代时循环执行,它移动到下一个文件。
有没有办法将文件指针倒回上一行,所以我的 for 循环将其作为新基因捕获?
我见过类似的问题,但没有一个解决我通过文件读取的具体方式
for line in file:
#do stuff