2010/2/10 Peter Otten <__pete...@web.de>:
> pyt...@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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to