On Apr 15, 1:51 pm, Erich <[EMAIL PROTECTED]> wrote: > Hello all, > > Today I found myself once again defining two functions that I use all > the time: nsplit and iterable. These little helper functions of mine > get used all the time when I work. Im sick of having to define them > (but am very good at it these days, less than 1 typo per function!). > It leads me to the following questions > > 1. Is this functionality already built in and im just missing it > 2. Is there some well known, good technique for these that I missed? > 3. Insert question I need to ask here (with a response) > > These are the funtions w/ explaination: > > 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'] See the docs for more info: http://docs.python.org/lib/string-methods.html > This is like split() but returns a list of exactly lenght n. This is > very useful when using unpacking, e.g.: > x, y = nsplit('foo,bar,baz', ',', 2) > > def iterable(item, count_str=False): > if not count_str and isinstance(item, str): > return False > try: > iter(item) > except: > return False > return True > This is just simple boolean test for whether or not an object is > iterable. I would like to see this in builtins, to mirror callable. > The optional count_str adds flexibility for string handling, since > sometimes I need to iterate over a string, but usually not. I > frequently use it to simplify my case handling in this type of > costruct: > > def foo(bar): > bar = bar if iterable(bar) else [bar] > for x in bar: > .... > > Thanks for feeback, > Erich Not sure about the other one, but you might look at itertools. Mike -- http://mail.python.org/mailman/listinfo/python-list