import re, time
class ConvertNumber:
# 主程序
def ranki(self, num):
rank = []
for i in [num]:
i = self.turn(i)
rank.append(i)
return rank[0]
# 如果超過萬,則分為兩部分以節(jié)約代碼和運行速度
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
# 轉換數(shù)字并插入對應單位,單位為‘零’則再插入一個‘零’以方便正則表達式替換
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()函數(shù)真是可以用在列表和字符串。
# 加上 if 語句 防止對不必要的數(shù)據(jù)進行正則表達式檢測
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數(shù)字轉換成中文/數(shù)字轉換成漢字
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 前兩天面試被問到“哪種機器學習算法沒有參數(shù)?”回答的不是很好,因此在這里重新梳理一下。 1、參數(shù)模型 如果我們對所...
- 基本概念入手 重要說法: 對神經(jīng)網(wǎng)絡進行訓練的目的就是為每個神經(jīng)元找到最適合它的w和b的值.(w為:每個輸入所對應...