insert thousands separators

Michael Sparks zathras at thwackety.com
Fri Jun 13 21:58:18 CEST 2003


On Friday 13 June 2003 15:52, Marcus Bergmann wrote:
...
> how can I insert thousands separators into an integer or a string, e.g.
> 1000000 to 1.000.000?

A "correct" way:
>>> import locale
>>> locale.getlocale(locale.LC_NUMERIC)
['en_GB', 'iso8859-1']
>>> locale.format("%d",1000000,1)
'1,000,000'

A way of doing it without division:

def commafy(num,sep=",",floatsep="."):
  convert,nonIntPart,r = num,None,""
  if not isinstance(num,int):
      convert=int(num)
      nonIntPart=num-int(num)
  revd=str(convert)[-1::-1]
  l=len(revd)
  for i in xrange(0,l,3):
     r += revd[i:i+3]
     if i<l-3:
       r += sep
  r=r[-1::-1]
  if nonIntPart:
     r = r+floatsep+str(nonIntPart)[2::]
  return r

>>> commafy(1000000)
'1,000,000'


Michael
-- 
Ask five economists and you'll get five different explanations (six if
one went to Harvard).
		-- Edgar R. Fiedler






More information about the Python-list mailing list