Python:行分割值错误?

2024-09-25 08:26:42 发布

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

我使用的是python2.7.3btw

大家好

我有点小问题。问题是我总是遇到麻烦与下面的星线。(抱歉,对Python有点陌生)

到目前为止我的代码是:

with open('parsedChr','w') as fout, open('heartLungClassU.gtf','r') as filein:

    average = 0
    difference = 0
    position = ''
    bp = 0

    for line in filein:
      **chrom,cuff,exon,start,end,dot,sign,dots,gene,tranid,exonid,rest = line.split('\t',11)**
      ## notice 12 variables here so I tried to unpack with value 11

    ##more code after

我一直收到这个错误:

^{pr2}$

我不明白为什么——请注意,我要把这行分成12个变量。为什么python会抱怨需要超过9个值才能解包?我以前有过这样的代码,我必须把它分成6个变量,所以在中使用了5个变量线.分割(按我的理解,5分为6块),但我不明白为什么类似的逻辑在这里行不通。在

编辑:以下是文件的一部分:

chr1    Cufflinks   exon    14765607    14765689    .   +   .   gene_id "XLOC_000018";  transcript_id   "TCONS_00001260";   exon_number "1";    oId "CUFF.68.1";    class_code  "u";    tss_id  "TSS40";
chr1    Cufflinks   exon    14766604    14767199    .   +   .   gene_id "XLOC_000018";  transcript_id   "TCONS_00001260";   exon_number "2";    oId "CUFF.68.1";    class_code  "u";    tss_id  "TSS40";
chr1    Cufflinks   exon    21156530    21156632    .   +   .   gene_id "XLOC_000028";  transcript_id   "TCONS_00002433";   exon_number "1";    oId "CUFF.88.1";    class_code  "u";    tss_id  "TSS69";

编辑:Meh。明白了。谢谢大家的帮助。在


Tags: 代码idnumberwithcodeclassoidtranscript
3条回答

这意味着您的行没有包含足够的(在本例中至少9个)制表符字符,因此split()调用将用拆分后的值填充所有变量。在

以下代码将产生相同的错误:

s = 'a b'
x, y, z = s.split(' ') # the result is ('a', 'b') but we have 3 variables
                       # on the left side of the expression.

这意味着该行仅分为9个值:

示例:

>>> a,b,c='foo bar'.split()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack

{cd1>你可以添加这个条件:

^{pr2}$

要查看错误所在的确切行号,请执行以下操作:

for i, line in enumerate(filein):
    try:
        chrom,cuff,exon,start,end,dot,sign,dots,gene,tranid,exonid,rest = line.split('\t',11)
    except ValueError:
        print "ValueError on line", i+1
        print "line", repr(line)
        raise

在您的评论中,您为文本文件提供了一个link。我找不到任何少于11个标签的行:

^{pr2}$

仔细检查你是否真的打开了你认为你正在打开的文件。在

相关问题 更多 >