Python 中文数字转英文阿拉伯数字(百万以内)
一、代码:
import re
def repl(data):
cnNum = ['一', '二', '三', '四', '五', '六', '七', '八', '九']
enNum = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
for i in range(len(cnNum)):
data = data.replace(cnNum[i], enNum[i])
if len(data) == 1:
data = data.replace('十', '10')
elif len(data) == 2:
if data[0] == '十':
data = data.replace('十', '1')
else:
data = data.replace('十', '0')
else:
data = data.replace('十', '')
return data
def convert(cn):
en = 0
res = []
ten_t = re.search(r'[一二三四五六七八九十]{1,3}万', cn)
if ten_t:
ten_t_cn = ten_t.group()
ten_t = re.sub(r'万', '', ten_t_cn)
ten_t = int(repl(ten_t)) * 10000
cn = cn.replace(ten_t_cn, '')
res.append(ten_t)
thousand = re.search(r'[一二三四五六七八九]千', cn)
if thousand:
thousand_cn = thousand.group()
thousand = int(repl(thousand_cn[0])) * 1000
cn = cn.replace(thousand_cn, '')
res.append(thousand)
hundred = re.search(r'[一二三四五六七八九]百', cn)
if hundred:
hundred_cn = hundred.group()
hundred = int(repl(hundred_cn[0])) * 100
cn = cn.replace(hundred_cn, '')
res.append(hundred)
ten = re.search(r'[一二三四五六七八九十]+', cn)
if ten:
ten = int(repl(ten.group()))
res.append(ten)
for num in res:
en += num
print(en)
return en
def main():
string = '第九十九万八千六百三十二章 替换中文数字'
cn_num = re.findall(r'[零一二三四五六七八九十百千万]+', string)
for item in cn_num:
item_no0 = item.replace('零', '')
number = convert(item_no0)
string_num = string.replace(item, ' %s ' % number)
print('替换前:%s\n替换后:%s' % (string, string_num))
main()
二、执行结果:
替换前:第九十九万八千六百三十二章 替换中文数字
替换后:第 998632 章 替换中文数字
三、注:
百万或百万以上请根据原理自行添加