Linkte verdiğiniz örneği türkçeleştirdim ve kuruşlarla da çalışacak hale
getirdim.
Mail listesine de göndereyim de google'da arayan olursa bulabilsin, bir
daha uğraşmasın.
Olur da kodu daha güzelleştirecek olan olursa düzgün halini paylaşırsa
sevinirim.
21-01-2011 12:14, Halid yazmış:
Şu örneği türkçeleştirerek işinizi görebilirsiniz.
http://jijo.free.net.ph/files/python/numtoword.py
21 Ocak 2011 03:59 tarihinde Timuçin Kızılay <[email protected]
<mailto:[email protected]>> yazdı:
Faturaların altında yazı ile yazılır ya işte o şekilde çeviri yapacak
fonksiyon lazım, belki yazılmışı vardır diye buradan bir sorayım dedim.
1523,45 girince "BinbeşyüzyirmiüçTL45Kuruş" gibi bir değer döndürecek.
_______________________________________________
Linux-programlama mailing list
[email protected]
<mailto:[email protected]>
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php
--
Halid Altuner ~ Co-Founder & Software Engineer at Kuluçka
w: halid.org <http://halid.org>
# -*- coding: utf-8 -*-
import string
def moneytoword_tr(para):
n = para.replace('.', '').split(',')
nlen = len(n)
if nlen < 1 or nlen > 2:
raise Exception, 'Error parsing numeric string'
src = n[0]
lira = u'%sTÃRKLİRASI' % numtoword_tr(src)
if nlen == 2:
src = n[1]
kurus = u'%sKURUÅ' % numtoword_tr(src)
else:
kurus = u''
return u'#%s,%s#' % (lira, kurus)
def numtoword_tr(number):
# Remove comma-delimiters and split the string into whole and decimal parts
n = number.replace('.', '').split(',')
nlen = len(n)
if nlen != 1:
raise Exception, 'Error parsing numeric string'
src = n[0]
# Birler
ones = {
u'0':u'', #Sıfır
u'1':u'Bir',
u'2':u'İki',
u'3':u'Ãç',
u'4':u'Dört',
u'5':u'BeÅ',
u'6':u'Altı',
u'7':u'Yedi',
u'8':u'Sekiz',
u'9':u'Dokuz'
}
# Tens-place names
tens = {
u'1':u'On',
u'2':u'Yirmi',
u'3':u'Otuz',
u'4':u'Kırk',
u'5':u'Elli',
u'6':u'AltmıÅ',
u'7':u'YetmiÅ',
u'8':u'Seksen',
u'9':u'Doksan'
}
# Number groups
groups = (
u'',
u'Yüz',
u'Bin',
u'Milyon',
u'Milyar',
u'Trilyon',
u'Katrilyon',
u'BinKatrilyon:)'
)
# Beginning values
srclen = len(src)
pos = 1
final = []
thisgrp = []
grpname = u''
# Handle the possibility of a zero being sent
if src == u"0":
return u"Sıfır"
# Main loop for conversion
while pos <= srclen:
#3'lü gruplar halinde iÅleyelim.
posmod = pos % 3
# Only parse non-zero digits
if src[srclen - pos] != u'0':
if posmod == 2:
thisgrp.insert(0, tens[src[srclen - pos]])
else:
if posmod == 0:
#Biryüz olayını kontrol.
if src[srclen - pos] != u'1':
thisgrp.insert(0, ones[src[srclen - pos]])
thisgrp.insert(1, groups[1])
else:
thisgrp.insert(0, groups[1])
else:
thisgrp.insert(0, ones[src[srclen - pos]])
# Handle end-of-groups
if thisgrp and (not posmod or pos == srclen):
if grpname:
if grpname == u'Bin':
if thisgrp[0] == u'Bir':
thisgrp = []
thisgrp.append(grpname)
thisgrp.extend(final)
final = thisgrp
thisgrp = []
if not posmod:
grpname = groups[pos / 3 + 1]
pos += 1
return u''.join(final)
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php