text: user8959: I have a fasta file (gene.fasta)with sequences with names patterns:  
  >Hsc_gene_9627.t1
  ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACAACATCTGCTGTGCAGCCGCTTCA
  TTGCTCATTTTGAATGCCGTTACATTGGAGAAGGATGCTAATGATTATGCCGTTGGCGAT
  
  and I have the Ids in text file (seq.txt) which are not the exact as in the fasta file:
  HSC_gene_996
  HSC_gene_9734
  and some of the names came as 
  HSC_gene_996|HSC_gene_9734 
  
  How can extract the sequences?
  I am not experienced in python so please use python for dummies language :)
  Thank you in advance 
  
  user5077: For example, the fasta are like these:
  gene.fasta:
  
  >Hsc_gene_9627.t1
  ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACA
  ACATCTGCTGTGCAGCCGCTTCA
  >Hsc_gene_9627.t2
  GGGGTTTTCCCC
  >Hsc_gene_962.t1
  AGTCGTCAGTCAGTAGTCGC
  
  seq.txt:
  
  HSC_gene_9627
  HSC_gene_9734 
  HSC_gene_996|HSC_gene_9734
  
  We use a few modules, read in the fasta:
  import re
  from Bio import SeqIO                                                                 
  records = list(SeqIO.parse("gene.fasta","fasta"))
  
  Read in the list:
  seq = [i.rstrip().lower() for i in open('seq.txt').readlines()]
  
  Here I use two functions, one to write fasta files, and the other to format the header for comparison:
  def fasta_out(rec):
      return(">"+str(rec.description)+"\n"+str(rec.seq))
  
  def format(rec):
      return re.sub("[.][^ ]*$","",rec.description).lower()
  
  Define the records to keep:
  keep = [fasta_out(i) for i in records if format(i) in seq]
  
  Write them out:
  f=open('matched.fasta','w')
  f.writelines("\n".join(keep))
  f.close()
  
  We can check:
  open('matched.fasta').readlines()                                                          
  Out[50]: 
  ['>Hsc_gene_9627.t1\n',
   'ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACAACATCTGCTGTGCAGCCGCTTCA\n',
   '>Hsc_gene_9627.t2\n',
   'GGGGTTTTCCCC']
  
  Most likely there are some simple while, for loops that does not require modules..
  
original_text: 8959: <p>I have a fasta file (gene.fasta)with sequences with names patterns:  </p>
  
  <pre><code>&gt;Hsc_gene_9627.t1
  ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACAACATCTGCTGTGCAGCCGCTTCA
  TTGCTCATTTTGAATGCCGTTACATTGGAGAAGGATGCTAATGATTATGCCGTTGGCGAT
  </code></pre>
  
  <p>and I have the Ids in text file (seq.txt) which are not the exact as in the fasta file:</p>
  
  <pre><code>HSC_gene_996
  HSC_gene_9734
  and some of the names came as 
  HSC_gene_996|HSC_gene_9734 
  </code></pre>
  
  <p>How can extract the sequences?
  I am not experienced in python so please use python for dummies language :)
  Thank you in advance </p>
   5077: <p>For example, the fasta are like these:</p>
  
  <pre><code>gene.fasta:
  
  &gt;Hsc_gene_9627.t1
  ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACA
  ACATCTGCTGTGCAGCCGCTTCA
  &gt;Hsc_gene_9627.t2
  GGGGTTTTCCCC
  &gt;Hsc_gene_962.t1
  AGTCGTCAGTCAGTAGTCGC
  
  seq.txt:
  
  HSC_gene_9627
  HSC_gene_9734 
  HSC_gene_996|HSC_gene_9734
  </code></pre>
  
  <p>We use a few modules, read in the fasta:</p>
  
  <pre><code>import re
  from Bio import SeqIO                                                                 
  records = list(SeqIO.parse("gene.fasta","fasta"))
  </code></pre>
  
  <p>Read in the list:</p>
  
  <pre><code>seq = [i.rstrip().lower() for i in open('seq.txt').readlines()]
  </code></pre>
  
  <p>Here I use two functions, one to write fasta files, and the other to format the header for comparison:</p>
  
  <pre><code>def fasta_out(rec):
      return("&gt;"+str(rec.description)+"\n"+str(rec.seq))
  
  def format(rec):
      return re.sub("[.][^ ]*$","",rec.description).lower()
  </code></pre>
  
  <p>Define the records to keep:</p>
  
  <pre><code>keep = [fasta_out(i) for i in records if format(i) in seq]
  </code></pre>
  
  <p>Write them out:</p>
  
  <pre><code>f=open('matched.fasta','w')
  f.writelines("\n".join(keep))
  f.close()
  </code></pre>
  
  <p>We can check:</p>
  
  <pre><code>open('matched.fasta').readlines()                                                          
  Out[50]: 
  ['&gt;Hsc_gene_9627.t1\n',
   'ATGGCACGCATTTTCCTCATTCTTTTATTGCTGCACAACATCTGCTGTGCAGCCGCTTCA\n',
   '&gt;Hsc_gene_9627.t2\n',
   'GGGGTTTTCCCC']
  </code></pre>
  
  <p>Most likely there are some simple while, for loops that does not require modules..</p>
  