Friday, September 10, 2010

Itertools and string manipulation

A couple of examples here...

import itertools as it

def verticalize(*strings):
    return (''.join(col)
            for col in it.izip_longest(
                *sorted(strings, key=len, reverse=True),
                fillvalue=''))

def verticalize2(*strings):
    return (''.join(col)
        for col in it.izip_longest(
            *strings, fillvalue=' '))


The first one sorts the string by their length.
As it if often the case when using itertools stuff, that code has a very functional intention.
Here an example:

print '-' * 80
verticalized = verticalize('casa', 'python', 'mela')
for row in verticalized:
    print row

print '-' * 4
verticalized = verticalize2('casa', 'python', 'mela')
for row in verticalized:
    print row

--------------------------------------------------------------------------------
phh
yoo
tum
hse
oe
n
----
hph
oyo
mtu
ehs
 oe
 n 

No comments: