TypeError:列表索引必须是整数或切片,而不是BioPython中的str

2024-10-01 22:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码导致了此错误:

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

我错过了什么


Tags: 代码inselfidlen错误recordlength
1条回答
网友
1楼 · 发布于 2024-10-01 22:39:15

由于您试图将一个非整数作为索引分配给列表,因此会出现这样的错误。请将列表更改为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':<;main.SeqInfo对象位于0x1178b3710>;}

相关问题 更多 >

    热门问题