Best way to use globally format

Ben Bacarisse ben.usenet at bsb.me.uk
Sun May 3 12:32:51 EDT 2015


Cecil Westerhof <Cecil at decebal.nl> writes:

> I have a file where I used a lot of {0}, {1} and {2}. Most but not all
> are changed to {0:.3E}, {1:.3E} and {2:.3E}. But when I want to change
> the format I come in dependency hell.
>
> I could do something like:
>     format = ':.3E'
>     fmt0   = '{0' + format + '}
>     fmt1   = '{1' + format + '}
>     fmt2   = '{2' + format + '}
>
> and replace occurrences of:
>     'before {0} after'
> with:
>     'before ' + fmt0 + ' after'
>
> But that does not really make me happy. Is there a better way?

'Better' is often a bit tricky.  You could always factor the formatted
printing into a function, but you will have considered that.  You could
pass the format to used to the format function:

  format_for_numbers = '.3E'
  ...
  'x = {0:{nfmt}}, y = {1:{nfmt}}'.format(3.4, 4.5, nfmt=format_for_numbers);

or you could do that with just the width (if that is the variable part):

  'x = {0:.{nwd}E}, y = {1:.{nwd}E}'.format(3.4, 4.5, nwd=4);
  
-- 
Ben.



More information about the Python-list mailing list