如何在文件中搜索“精确字符串模式”

时间:2019-11-05 12:24:18

标签: python-2.7

我有一个包含序列的文件和另一个包含标识符的文件。我正在尝试仅从序列文件中提取与标识符匹配的文件。

我试图编写一个python脚本,在列表中提取标识符并在序列文件中搜索每个标识符。


def get_seq(seqfile,id_list):
    a=0
    l=[]    
    for line in id_list:
        l.append(line.rstrip())


    for elem in l:
        for line in seqfile:
            if line[0]==">" and str(line[1:4]) in l:
                    a=1
            elif line[0]==">" and str(line[1:4]) not in l:  
                    a=0
            if a==1:
                print line

我在这里给了我一个简短的例子,说明了我希望获得的结果。具有以下序列文件:

>111
ababaabababababababababababababababababababa

>1111
abababababaabababababab

>1211
abbbbbbbbbbbaaaaaaaaaaaaaaaa

>1332
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

>12
aaaassssssssssssaaaaaaaaaaaaaaaa

和以下ID文件:

111
1332
12

我希望将其作为输出

>111
ababaabababababababababababababababababababa
>1332
abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
>12
aaaassssssssssssaaaaaaaaaaaaaaaa

但是,我得到了:

>111
ababaabababababababababababababababababababa
>1111
abababababaabababababab

我很确定在尝试搜索字符串[str(line [1:4])]中的模式时,错误出在代码的第二部分。我这里有一个双重问题:

  • 标识符的长度不同,所以在搜索模式时我不知道如何指定可变长度。
  • 最长的标识符可能包含较短的标识符作为子字符串,例如在我的情况下:搜索模式> 111也会返回> 1111。

通常,我该如何搜索字符串中的确切模式?

0 个答案:

没有答案