I feel stoopid ... this code is to verbose

Christophe Delord christophe.delord at free.fr
Fri Jun 14 12:39:45 EDT 2002


If you want to split a number you can try this :

def nbSlicer(nb, chunkSize=3):
	if nb==0: return "0"
	l = []
	b = 10**chunkSize
	fmt = "%%0%dd"%chunkSize
	while nb:
		nb, r = divmod(nb, b)
		l.insert(0,(nb and fmt or "%d")%r)
	return '.'.join(l)

Or this if you prefer to split a string :

def stringSlicer(st, chunkSize=3):
	l = []
	while st:
		l.insert(0,st[-3:])
		st = st[:-3]
	return '.'.join(l)

print nbSlicer(42000000)
print stringSlicer('42000000')


On Fri, 14 Jun 2002 18:19:29 +0200
Max M <maxm at mxm.dk> wrote:

> Hmm ... I am working on a problem. In Danish we have a number format 
> that looks like:
> 
> 42.000.000,00 which is 42 millions
> 
> So I need to insert dot's at every three character from end of the 
> string for the integer value of the number.
> 
> Let's discard decimal points and just focus on the meat. I have written 
> a funcion which works::
> 
> def stringSlicer(string, chunkSize=3):
>      chunkList = []
>      reverseString = list(string)
>      reverseString.reverse()
>      for i in range(0, len(string), chunkSize):
>          chunk = reverseString[i:i+chunkSize]
>          chunk.reverse()
>          chunk = ''.join(chunk)
>          chunkList.append(chunk)
>      chunkList.reverse()
>      return '.'.join(chunkList)
> 
> 
> print stringSlicer('42000000')
> 
>  >>> 40.000.000
> 
> I just find that it's a lot of code for such a little function an it 
> annoys my sense of aestetics. I have tried a lot of different approaches 
> including using zip on a list like ['','','.'], and other weird stuff :-)
> 
> I just cannot seem to find the nice 3-liner I expected from the 
> beginning. Has anybody got a better solution ? I thought somebody might 
> find it a fun exercise. Well I have...
> 
> 
> regards Max M
> 


-- 

(o_   Christophe Delord                   _o)
//\   http://christophe.delord.free.fr/   /\\
V_/_  mailto:christophe.delord at free.fr   _\_V



More information about the Python-list mailing list