For循环遍历Python中的一串字符串

Foor loop over a string of strings in 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 循环仍在等待某些东西。我在这里错过了什么?

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

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 循环及其主体,然后按回车键(两次),然后 粘贴handle.read() 行。 (也就是说,假设这一行不是循环的一部分;如果是这样,请修复缩进。)或者,将所有代码放入一个文件中,然后 运行 该文件 python filename.py .