import re, time
class ConvertNumber:
# 主程序
def ranki(self, num):
rank = []
for i in [num]:
i = self.turn(i)
rank.append(i)
return rank[0]
# 如果超过万,则分为两部分以节约代码和运行速度
def turn(self, x):
i = str(x)
if len(i) > 8:
i = self.tran(i[0:-8]) + '亿' + self.tran(i[-8:])
elif len(i) > 4:
i = self.tran(i[0:-4]) + '万' + self.tran(i[-4:])
else:
i = self.tran(i[-4:])
return i
# 转换数字并插入对应单位,单位为‘零’则再插入一个‘零’以方便正则表达式替换
def tran(self, x):
num = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九']
kin = ['零', '十', '百', '千']
x = list(reversed(x))
for i in x:
x[(x.index(i))] = num[int(i)]
if len(x) >= 2:
if x[1] == num[0]:
x.insert(1, kin[0])
else:
x.insert(1, kin[1])
if len(x) >= 4:
if x[3] == num[0]:
x.insert(3, kin[0])
else:
x.insert(3, kin[2])
if len(x) >= 6:
if x[5] == num[0]:
x.insert(5, kin[0])
else:
x.insert(5, kin[3])
x = self.delz(x)
return x
# 进行多余‘零’的删除
# reversed()函数真是可以用在列表和字符串。
# 加上 if 语句 防止对不必要的数据进行正则表达式检测
def delz(self, x):
x = ''.join(x)
if '零零' in x:
x = re.sub('零+', '零', x)
if x.startswith('零'):
x = list(x)
x.remove('零')
x = reversed(x)
x = ''.join(x)
return x
def main(self, num):
num = str(num)
if len(num) > 8:
last_8 = num[-8:]
strip_num = last_8.lstrip('0')
after_8 = self.ranki(strip_num)
front, _ = self.ranki(num).split('亿')
if len(strip_num) < 8:
return f"{front}亿零{after_8}"
else:
return f"{front}亿{after_8}"
else:
res = self.ranki(num)
return res
if __name__ == '__main__':
con = ConvertNumber()
print(con.main(110001001))
python数字转换成中文/数字转换成汉字
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。