我对 Python还很陌生,我的for
循环有一个问题,我似乎不太明白。
我正在尝试读取具有以下示例文本的 FASTA 文件:
>seq1
AAACTACCGCGTTT
>seq2
AAACTGCAACTAGCGTTT
>seq3
AAACCGGAGTTACCTAGCGTTT
我想做的是读入我的文件并打印 FASTA 标题(例如标题>seq1),然后我想匹配 DNA 序列中存在的两个独特模式(例如“AAA”和“TTT”)和打印这两种模式之间的 DNA 序列。
所以我希望我的输出看起来像这样:
>seq1
CTACCGCG
>seq2
CTGCAACTAGCG
>seq3
CCGGAGTTACCTAGCG
我有以下代码:
import re
def find_seq(filename):
with open(filename) as file:
seq=''
for line in file:
header = re.search(r'^>\w+', line)
if(header):
print (header.group())
seq = seq.replace('\n','')
find_Lpattern = re.sub(r'.*AAA', '',seq)
find_Rpattern = re.sub(r'TTT.*', '',find_Lpattern)
if(find_Rpattern):
print (find_Rpattern)
seq = ''
else:
seq += line
filename = 'test.txt'
print(find_seq(filename))
我一直把它作为我的输出:
>seq1
>seq2
CTACCGCG
>seq3
CTGCAACTAGCG
本质上,我的 for 循环跳过了 seq1,然后将 DNA 序列从 seq1 分配给 seq2,我的 for 循环上的迭代关闭。谁能指出我正确的方向,以便我解决这个问题?