"Elezar Simeon Papo" <[EMAIL PROTECTED]> wrote: > SCHOOL, DEPART1, DEPART2, DEPART3 = line.split('\t') > ValueError: need more than 3 values to unpack > > How do I solve this problem and change the program so it does not stop > if a data record has less than three DEPART values.
The problem is that when you unpack a sequence, you must have exactly the same number of variables as you have values. The idiom I use in a situation where I'm not sure how many values I've got in the sequence is: words = line.split('\t')+ 4 * [None] firstFourWords = words[0:3] SCHOOL, DEPART1, DEPART2, DEPART3 = firstFourWords The first line generates a list of words which is guaranteed to have at least 4 elements in it. The second line gets the first four of those words, and the last line unpacks them (in real life, I'd probably have combined the second and third lines, but I spread it out here for educational purposes). If line is "HardKnocks\tFoo", you'll end up unpacking ["HardKnocks", "Foo", None, None]. Depending on your application, you may want to pad with empty strings instead of None. It would be convenient if string.split() took an optional 'minsplit' argument as well as a 'maxsplit'. Then you could have just done: school, dept1, dept2, dept3 = line.split ('\t', 4, 4) but, alas, it doesn't work that way. -- http://mail.python.org/mailman/listinfo/python-list