写这个函数主要是用在英文日期到中文日期的转换里。比如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