如何解决TypeError:列表索引必须是整数或切片,而不是BioPython中的str
以下代码导致此错误:
Traceback (most recent call last):
File "/t.py",line 19,in <module>
seqsInfo[record.id] = SeqInfo(len(record),record.seq[0])
TypeError: list indices must be integers or slices,not str
from Bio import SeqIO
class SeqInfo():
def __init__(self,length,seqStart):
self.length = length
self.seqStart = seqStart
seqsInfo=[]
for record in SeqIO.parse("data/hybrid.AA.fasta","fasta"):
seqsInfo[record.id] = SeqInfo(len(record),record.seq[0])
这是输入文件:
>STRG2.t1 gene=STRG2 seq_id=NbV1Ch01 type=cds
PYKTCHKKFRNKMPSFYLASFCIMVLSFSITFASGNSVSNKTCIDDATIVLSFGLYQNSC
LEAEAIIYSWVERAVSQDPRMAASLLRLHFHDCFVNGCDASVLLDDTPNFIGEKTAAPNL
NSLRGFEVIDSIKADLELACPQTVSCADILAIAARDSVVLSGGWRWKVQMGRKDSLTAST
KAVNNNIPGPNSNIATLVSSFQNIGLSLQDMVTLSGAHTIGSARCSTFSSRLNGGGNSDM
NLDFLQSLQQLCSVSDTNITLANLDDMTPSTFDNQYYVNLLSGKGLLVSDQVLASGDDNT
REIVQTYVDDPSAFFDDFRNSMLKMGSLAPPTGTTGEIRVNCRV
我想念什么?
解决方法
由于您试图将非整数作为索引分配给列表,因此会出现此类错误。请将列表更改为dict,因为record.id为'STRG2.t1'。希望这可以解决问题:
from Bio import SeqIO
class SeqInfo():
def __init__(self,length,seqStart):
self.length = length
self.seqStart = seqStart
seqsInfo={}
for record in SeqIO.parse("data/hybrid.fasta","fasta"):
seqsInfo[record.id] = SeqInfo(len(record),record.seq[0])
print(seqsInfo)
输出: {'STRG2.t1':主 .SeqInfo对象,位于0x1178b3710>}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。