Creating formatted output using picture strings

Stephen Hansen apt.shansen at gmail.com
Wed Feb 10 11:06:25 EST 2010


On Wed, Feb 10, 2010 at 1:45 AM, Peter Otten <__peter__ at web.de> wrote:

> A basic implementation without regular expressions:
>
> >>> def picture(s, pic, placeholder="@"):
> ...     parts = pic.split(placeholder)
> ...     result = [None]*(len(parts)+len(s))
> ...     result[::2] = parts
> ...     result[1::2] = s
> ...     return "".join(result)
> ...
> >>>
> >>> picture("123456789", "(@@@)-@@-(@@@)[@]")
> '(123)-45-(678)[9]'
>

Huh. This is the best version of those posted, I think (especially including
mine! My jumping to regex is worthy of shame, sh ame).

It took a little bit to figure out what was really going on here, but its a
single-pass through to do it without recursion or building a bunch of
intermediate strings that are concatenated and dropped away.

Its clever, and I don't mean that in the bad way, because -all- the
solutions are pretty clever in the sneaky-tricky-neat way. But this is
clever-cool.

Just slightly dark-voodoo-incantation-esque. Slightly!

--S
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100210/1bf48392/attachment-0001.html>


More information about the Python-list mailing list