Creating formatted output using picture strings

Olof Bjarnason olof.bjarnason at gmail.com
Wed Feb 10 05:50:45 EST 2010


2010/2/10 Peter Otten <__peter__ at web.de>:
> python at bdurham.com wrote:
>
>> Does Python provide a way to format a string according to a
>> 'picture' format?
>>
>> For example, if I have a string '123456789' and want it formatted
>> like '(123)-45-(678)[9]', is there a module or function that will
>> allow me to do this or do I need to code this type of
>> transformation myself?
>
> 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]'
>
> Peter
> --
> http://mail.python.org/mailman/listinfo/python-list
>

Inspired by your answer here's another version:

>>> def picture(s, pic):
...   if len(s)==0: return pic
...   if pic[0]=='#': return s[0]+picture(s[1:], pic[1:])
...   return pic[0]+picture(s, pic[1:])
...
>>> picture("123456789", "(###)-##-(###)[#]")
'(123)-45-(678)[9]'
>>>

-- 
http://olofb.wordpress.com



More information about the Python-list mailing list