error ...1 value to unpack
matthias
matthiasblankenhaus at yahoo.com
Fri Nov 2 18:09:17 EDT 2007
On Nov 2, 2:32 pm, "Chris Mellon" <arka... at gmail.com> wrote:
> On Nov 2, 2007 3:04 PM, Beema shafreen <beema.shafr... at gmail.com> wrote:
>
>
>
> > hi everybody,
> > i have a file:
>
> > A_16_P21360207#304
> > A_14_P136880#783
> > A_16_P21360209#795
> > A_16_P21360210#173
> > A_16_P03641959#1177
> > A_16_P03641960#1944
> > A_16_P03641962#999
> > A_16_P41563648#-31
> > A_16_P03641963#3391
> > A_16_P41563649#3626
> > A_16_P03641964#180
> > A_16_P41563655#1216
> > A_16_P03641965#1170
> > A_16_P03641966#194
> > A_16_P21360229#290
> > A_16_P03641967#425
> > A_16_P21360231#1091
> > A_16_P03641968#1167
> > A_16_P03641969#421
> > A_16_P03641970#63
> > A_16_P21360234#290
> > A_16_P21360235#289
> > A_16_P03641971#398
> > A_16_P21360237#418
> > A_16_P03641972#122
> > A_16_P21360239#16
> > A_16_P03641973#2187
> > A_16_P41563669#2881
> > A_16_P03641974#1101fh = open('complete_span','r')
> > data = fh.readline().split('#')
> > old_probe = data[0].strip()
> > old_value = data[1].strip()
> > #print old_probe, old_value
> > count = 1
> > while fh:
> > current_probe, current_value = fh.readline().strip().split('#')[0:2]
> > probe =current_probe.strip()
> > value = current_value.strip()
> > if old_value > value:
> > res_value='%s\t%s'%(old_value, old_probe)
> > print res_value
> > if count == 244000:
> > break
> > old_probe,old_value =probe, value
> > fh.close()
> > and i face this error:Traceback (most recent call last):
> > File "count_values.py", line 8, in <module>
> > current_probe, current_value = fh.readline().strip().split('#')[0:2]
> > ValueError: need more than 1 value to unpack
>
> > why do i get this what is the solution for this....
> > regards
> > shafreen
>
> One of your lines doesn't have a # in it, so split is returning a one
> element list.
No, that's not the problem. The problem is that your algo is
incorrect. fh.readline() returns
a null string at EOF. Thus, the split() functions fails. Personally,
I would rewrite the loop
completely. However this will fix your code :
fh = open('complete_span','r')
data = fh.readline().split('#')
old_probe = data[0].strip()
old_value = data[1].strip()
print old_probe, old_value
count = 1
line = ""
while line:
line = fh.readline().strip()
if line :
current_probe, current_value = line.split('#')[0:2]
probe =current_probe.strip()
value = current_value.strip()
print "probe: [%s], value [%s]" % (probe, value)
if old_value > value:
res_value='%s\t%s'%(old_value, old_probe)
print res_value
if count == 244000:
break
old_probe,old_value =probe, value
fh.close()
More information about the Python-list
mailing list