【问题标题】:Python error: need more than one value to unpackPython 错误:需要多个值才能解压
【发布时间】:2013-03-22 19:47:57
【问题描述】:

好的,所以我正在学习 Python。但是为了我的学习,我已经做了相当复杂的事情。我正在尝试运行一个脚本来分析 excel 文件中的数据。看起来是这样的:

#!/usr/bin/python
import sys

#lots of functions, not relevant

resultsdir = /home/blah

filename1=sys.argv[1]
filename2=sys.argv[2]
out = open(sys.argv[3],"w")

#filename1,filename2="CNVB_reads.403476","CNVB_reads.403447"

file1=open(resultsdir+"/"+filename1+".csv")
file2=open(resultsdir+"/"+filename2+".csv")

for line in file1:
    start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
    CNVs1[chr].append([int(start),int(end),float(BF)])

for line in file2:
    start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
    CNVs2[chr].append([int(start),int(end),float(BF)])

这些是excel文件中数据列的标题,我想拆分它们,我什至不确定在使用excel文件中的数据时是否需要这样做。

#more irrelevant stuff

out.write(filename1+","+filename2+","+str(chromosome)+","+str(type)+","+str(shared)+"\n")

这是它应该在我的输出中写入的内容,“共享”是我计算出来的,其余的已经在文件中。

好的,现在是我的问题,最后,当我这样调用脚本时:
python script.py CNVB_reads.403476 CNVB_reads.403447 script.csv 在我的shell中

我收到以下错误消息:

start.p,end.p,type,nexons,start,end,cnvlength,chromosome,id,BF,rest=line.split("\t",10)
ValueError: need more than 1 value to unpack

我不知道与数据相关的含义是什么...有什么想法吗?

【问题讨论】:

  • 这意味着您的行没有由制表符分隔的 11 个值。它显然只有一个
  • 听起来像line.split("\t",10) 只返回一个丢失的元素。

标签: python


【解决方案1】:

line.split('\t', 10) 调用未返回 11 个元素。也许它是空的?

您可能希望使用csv module 来解析这些文件。

import csv
import os

for filename, target in ((filename1, CNVs1), (filename2, CNVs2)):
    with open(os.path.join(resultsdir, filename + ".csv"), 'rb') as csvfile:
        reader = csv.reader(csvfile, delimiter='\t')
        for row in reader:
            start.p, end.p = row[:2]
            BF = float(row[8])
            target[chr].append([int(start), int(end), BF])

【讨论】:

  • 我现在尝试使用 csv 模块,但我再次收到错误消息:要解压的值太多...
  • @user2112896:当这种情况发生时打印出rowtry: start.py, end.p = row[:2]except ValueError: print "Not enough values? Row:", row
  • @user2112896:不要解压循环中的行;您的文件在每行中有 更多 列,因此解压缩将不起作用。为什么不改用我的版本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
相关资源
最近更新 更多