python英文数字到中文数字的转换

写这个函数主要是用在英文日期到中文日期的转换里。比如datetime格式化中文日期是“03月17日”,这种看起来就没什么美感。转换成“三月十七日”看起来就顺眼多了。日期格式化函数满地都是我就不写了,阿拉伯数字转中文数字的没找到只好自己写了。只支持100以下数字(月份和日期够了,年份转换没技巧就没写,这个改100以上也很容易)。也没仔细测过和优化过,马马虎虎够用就OK了。

def getHansNum(d):
    #先弄个中英文对照的dict
    hanNum = {0: '零', 1: '一', 2: '二', 3: '三', 4: '四',
              5: '五', 6: '六', 7: '七', 8: '八', 9: '九', 10: '十'}
    #判断数字是不是两位的(if len(str(d)) > 1:),不过实际上后来发现……脑子瓦特了,应该直接判断数字大于9不就是2位的了么……
    if d > 9:
        #取第一位和第二位数字,不过后来发现应该取整也可以,但是就没折腾了
        d1 = int(str(d)[0])
        d2 = int(str(d)[1])
        #需要判断10和10到20间的特殊情况,比如10=十,不能是一十。不过感觉好像写麻烦了,但是没有深究
        if d == 10:
            resD = hanNum[10]
        elif d > 10 and d < 20:
            resD = hanNum[10]+hanNum[d2]
        elif d > 10 and d2 == 0:
            resD = hanNum[d1]+hanNum[10]
        else:
            resD = hanNum[d1]+hanNum[10]+hanNum[d2]
    else:
        resD = hanNum[d]
    return resD

调用和测试:

while i < 100:
    print(getHansNum(i)+'\n')
    i = i+1