用于在Biopython中循环一串字符串

时间:2015-01-09 11:25:55

标签: python loops for-loop biopython

我编写了以下代码,从NCBI下载多个序列。

import numpy as np
from Bio import Entrez
Entrez.email ="user@example.com"
data = np.loadtxt('/home/Documents/XXX.txt', dtype="string")
data
array(['YP_615060', 'YP_615061', 'YP_615062', ..., 'YP_611146',
   'YP_611148', 'YP_611150'], 
  dtype='|S12')
ids=data[:10]
ids_1=data[10:20]
ids_1=",".join(ids_1)
ids_2=data[20:30]
ids_2=",".join(ids_2)
total=(ids, ids_1, ids_2)
for c in total:
    handle = Entrez.efetch(db="protein", id=c, rettype="fasta", retmode="txt")
handle.read()

我收到错误

 File "<stdin>", line 3
handle.read()
     ^
SyntaxError: invalid syntax

我想我正在写'foor'循环错误,但我无法得到问题所在。它被认为是一个微不足道的问题,但我无法找到解决方法。

如果我测试for循环而我没有调用

handle.read()

运行

>>>for c in total:
...     handle=Entrez.efetch(db="protein", id=c, rettype="fasta", retmode="txt")
... 

for循环仍在等待某事。我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

这是一个疯狂的猜测,但您的代码看起来像交互式会话的混合输入和输出,我可以在交互模式下粘贴代码块时重现您的错误:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(10):
...     print i
... print "done"
  File "<stdin>", line 3
    print "done"
        ^
SyntaxError: invalid syntax

相反,尝试仅粘贴 for循环及其正文,然后按Enter(两次),然后粘贴{{1行。 (也就是说,假设此行不是循环的一部分;如果是,请修复缩进。)或者,将所有代码放入文件并使用handle.read()运行该文件。