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

Cevap