Loading... 直接上代码 ```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): # 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)) # 测试列表 text = ['第一百零三十五章', '第一百零四章', '第一百零五章'] for tex in text: re_resu = re.findall(re.compile('第(.*)章'), tex)[0] if len(re_resu) > 10: pass result = main(re_resu) ``` 输出结果为 ```shell 替换前:一百零三十五 替换后: 135 替换前:一百零四 替换后: 104 替换前:一百零五 替换后: 105 ``` 最后修改:2024 年 05 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏