
Calvin Spealman wrote:
This might be a silly idea, but I was wondering about forcing split() to return at least X number of items. For example, I might be getting a comma separated string and i want to split it up into names, but I might have less than all of them. If it is just 0, 1, or 2, I can use partition(), but any more and that doesn't work. Besides, I don't care if the separator is there, just to get the values. Might also make sense to give the values to give by default.
Example of implementing this:
def split(self, sep=None, max_splits=None, min_items=None): parts = self.split(sep, max_splits) if len(parts) < min_items: parts.extend([None] * (min_items - len(parts))) return parts
Use would be like this:
a, b, c, d = "1,2,3".split(',', None, 4)
Probably not a great idea, but I'm tossing it out there, anyway.
This is not a common thing to do, and it is easy enough to implement in a single assignment even without a helper function: a, b, c, d = ("1,2,3".split(',', 4) + [None] * 4)[:4] This also has the advantage of giving you explicit control of the filler value for missing pieces. (Note: be careful not to use a _mutable_ filler value in this manner!) - Tal