UUNIT=[u'', u'十' , u'百' , u'千']
BUINT = [u'', u'万', u'億', u'万億' , u'兆']
NUM=[u'零',u'一',u'二', u'三', u'四', u'五' , u'六', u'七', u'八', u'九']
def conv4(num, flag=False):
ret = u''
s = str(num)
l = len(s)
assert(len(s) <= 4)
if flag and len(s)<4:
ret = ret + NUM[0]
for i in xrange(l):
if s[i] != '0':
ret = ret + NUM[int(s[i])]+UUNIT[l-i-1]
elif s[i-1] != '0':
ret = ret + NUM[0]
return ret
def conv(num):
strnum = str(num)
l = len(strnum)
j = l / 4
jj = l % 4
lss = [strnum[0:jj] for i in [1] if strnum[0:jj]] \
+ [strnum[i*4+jj:(i+1)*4+jj] for i in xrange(j) if strnum[i*4+jj:(i+1)*4+jj] ]
print lss
ul = len(lss)
ret = u''
zflag = False
for i in xrange(ul):
bu = BUINT[ul-i-1]
tret = conv4(int(lss[i]), flag = i)
if tret[-1:] == NUM[0]:
tret = tret[:-1]
if tret:
print zflag , (tret+bu).encode('utf-8')
if zflag and tret[0] != NUM[0] :
ret = ret + NUM[0] +tret+bu
else:
ret = ret + tret+bu
zflag = False
else:
zflag = True
return ret
if __name__ == '__main__':
print conv(1000)
print conv(103056982342357234).encode('utf-8')