> -----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