原本是想用while循环来实现搜索数据,在找到数据时,可以终止循环。
思路是用while的判断条件来实现循环的终止,想用next每次只读取一行。
但是,简单的用next函数似乎无法实现;在while中使用迭代器,循环又终止不了
没办法了😂
#先把文件附给变量
swissprot=open("SwissProt.txt")
ac='Q0E0C6'
result=None
#用while来实现可终止的循环
while result==None:
#用到一个next的方法来读line,没有这个属性???CSDN上说是要区分iterable,iterator,用iter函数可以将iterable变成iterator
it=iter(swissprot)
line=next(it,'-1') #这个函数是每输入一次就执行下一行的内容
#读到标题行时,分割,然后再判断,符合就赋给结果,这样就可以停止了
if line[0]=='>':
line.split('|')
if line[1]==ac:
result=line.strip()
print(result)
你不需要自己用迭代器循环,直接用for循环就行,它是在for循环内部自动调用迭代器的
for line in swissprot:
在找到数据时用break结束循环
原来是我这一步错了,无语地笑了
if line[0]=='>':
line.split('|')
if line[1]==ac:
应该改为
if line[0]=='>':
if line.split('|')[1]==ac:
虽然花费了很多时间,但是问题终于解决了,还是开心的