Convert Number to Words in Indian Currency Format in Python
The following example shows, how to convert number to words in Indian currency format with paisa value.
def number_to_word(number): def get_word(n): words={ 0:"", 1:"One", 2:"Two", 3:"Three", 4:"Four", 5:"Five", 6:"Six", 7:"Seven", 8:"Eight", 9:"Nine", 10:"Ten", 11:"Eleven", 12:"Twelve", 13:"Thirteen", 14:"Fourteen", 15:"Fifteen", 16:"Sixteen", 17:"Seventeen", 18:"Eighteen", 19:"Nineteen", 20:"Twenty", 30:"Thirty", 40:"Forty", 50:"Fifty", 60:"Sixty", 70:"Seventy", 80:"Eighty", 90:"Ninty" } if n<=20: return words[n] else: ones=n%10 tens=n-ones return words[tens]+" "+words[ones] def get_all_word(n): d=[100,10,100,100] v=["","Hundred And","Thousand","lakh"] w=[] for i,x in zip(d,v): t=get_word(n%i) if t!="": t+=" "+x w.append(t.rstrip(" ")) n=n//i w.reverse() w=' '.join(w).strip() if w.endswith("And"): w=w[:-3] return w arr=str(number).split(".") number=int(arr[0]) crore=number//10000000 number=number%10000000 word="" if crore>0: word+=get_all_word(crore) word+=" crore " word+=get_all_word(number).strip()+" Rupees" if len(arr)>1: if len(arr[1])==1: arr[1]+="0" word+=" and "+get_all_word(int(arr[1]))+" paisa" return word print(number_to_word(12345)) print(number_to_word(123.45)) print(number_to_word(1234678910))
Twelve Thousand Three Hundred And Forty Five Rupees
One Hundred And Twenty Three Rupees and Forty Five paisa
One Hundred And Twenty Three crore Forty Six lakh Seventy Eight Thousand Nine Hundred And Ten Rupees
One Hundred And Twenty Three Rupees and Forty Five paisa
One Hundred And Twenty Three crore Forty Six lakh Seventy Eight Thousand Nine Hundred And Ten Rupees