> -----Original Message-----
> Date: Tue, 20 Mar 2007 22:53:15 +0100
> From: J?nos Juh?sz <[EMAIL PROTECTED]>
> Subject: Re: [Tutor] Making table
> To: tutor@python.org
> Message-ID:
>       <OF6CDC76A3.A1E29388-ONC12572A4.0077642D-
> [EMAIL PROTECTED]>
> Content-Type: text/plain; charset="iso-8859-2"
> 
> Dear Barry,
> 
> >>Using a formatting string of "%10.4f", these would be rendered as:
> >>
> >>               '  253.0000'
> >>               '   77.6000
> >>               '    9.0300'
> >>               '    0.0210'
> >>
> >>This formatting gives the impression that all values but the last
are
> >>more precise than they truly are.  A scientist or statistician would
> >>prefer to see something like this:
> >>
> >>               '254.    '
> >>               ' 77.6   '
> >>               '  9.03  '
> >>               '  0.0210'
> >>
> >>Does numpy or some other math package have that capability?
> 
> You can use advanced regexp, called lookaround, lookbehind for this
> purpose.
> 
> ###############
> 
> import re
> 
> l = (253., 77.6, 9.03, .0210, 1000, 100.1230)
> ending_zero = re.compile('0(?=0*$)') # zero followed with only zeros
> 
> for f in l:
>     print re.sub(ending_zero, ' ', ('%10.4f' % f))
> 
> ###############
> 
> 
> 
> 
> Yours sincerely,
> ______________________________
> J?nos Juh?sz

Thanks, J?nos.  Your solution works in almost all cases.  It breaks down
when one or more trailing zeros are significant: 0.0210 should print
unchanged, since the final 0 is significant.  

Still this is a big step forward.  It shouldn't be too hard to add the
additional logic.

Regards,
 
Barry
[EMAIL PROTECTED]
541-302-1107
________________________
We who cut mere stones must always be envisioning cathedrals.

-Quarry worker's creed



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to