>> def nsplit(s,p,n): >> n -= 1 >> l = s.split(p, n) >> if len(l) < n: >> l.extend([''] * (n - len(l))) >> return l > > The split() method has a maxsplit parameter that I think does the same > thing. For example: > >>>> temp = 'foo,bar,baz' >>>> temp.split(',', 1) > ['foo', 'bar,baz']
The OP's code *does* use the maxsplit parameter of split() The important (and missing) aspect of the OP's code in your example is exercised when there are *fewer* delimited pieces than "n": >>> "a,b,c".split(',', 5) ['a', 'b', 'c'] >>> nsplit("a,b,c", ',', 5) ['a', 'b', 'c', '', ''] A few things I noticed that might "improve" the code: - cache len(l) though my understanding is that len() is an O(1) operation, so it may not make a difference - using "delim", "maxsplit", "results" instead of "p", "n" "l" to make it easier to read -setting default values to match split() def nsplit(s, delim=None, maxsplit=None): if maxsplit: results = s.split(delim, maxsplit) result_len = len(results) if result_len < maxsplit: results.extend([''] * (maxsplit - result_len) return results else: return s.split(delim) My suggestion would just be to create your own utils.py module that holds your commonly used tools and re-uses them -tkc -- http://mail.python.org/mailman/listinfo/python-list