擅长:python、mysql、java
<p><code>\r</code>不是一个有效的字符类,我想你是想用<code>\s</code>代替。如果你不使用它们,你可以减少它们。在</p>
<p>但最重要的是,您需要正确提取组:</p>
<pre><code>match = re.search(r'>(\w+)\s+(\w+)', line)
if match:
tag, gene = match.groups()
myDict[tag] = gene
</code></pre>
<p>通过只创建<em>两个</em>捕获组,我们可以更简单地用<code>.groups()</code>提取这两个,并直接将它们分配给两个变量,<code>tag</code>和{<cd5>}。在</p>
<p>然而,阅读<a href="http://en.wikipedia.org/wiki/FASTA_format" rel="nofollow">FASTA format</a>似乎表明这是一种多行格式,标签在一行,基因数据在多行之后。在这种情况下,您的<code>\r</code>是为了匹配换行符。当你一次读一行文件时,这行不通。在</p>
<p>如果不使用以下正则表达式,则读取该格式会简单得多:</p>
^{pr2}$
<p>这将逐行读取文件,根据起始的<code>></code>字符检测标记,然后读取多行<em>基因信息,将其收集到字典中最近读取的标记下。在</p>
<p>注意<code>rU</code>模式;我们使用python的<a href="http://docs.python.org/glossary.html#term-universal-newlines" rel="nofollow">universal newlines mode</a>打开文件,以处理创建文件时使用的任何换行约定。在</p>
<p>最后但并非最不重要的是,看看<a href="http://biopython.org/wiki/Main_Page" rel="nofollow">BioPy project</a>;它们的<a href="http://biopython.org/wiki/SeqIO" rel="nofollow">^{<cd9>} module</a>可以完美地处理FASTA和其他许多格式。在</p>