前言

在中文支票上经常会遇到大写数字格式, 如果有一堆账本记录在Excel文档里, 需要转换格式成带小数点的阿拉伯数字.

需求

比如转化如下的数字成小数

代码

import xlrd
from word2number import w2n
file = 'bills.xlsx' # change filenameCN_NUM = {'〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, '六' : 6, '七' : 7, '八' : 8, '九' : 9, '零' : 0,'壹' : 1, '贰' : 2, '叁' : 3, '肆' : 4, '伍' : 5, '陆' : 6, '柒' : 7, '捌' : 8, '玖' : 9, '貮' : 2, '两' : 2,
}CN_UNIT = {'元' : 1,'十' : 10,'拾' : 10,'百' : 100,'佰' : 100,'千' : 1000,'仟' : 1000,'万' : 10000,'萬' : 10000,'亿' : 100000000,'億' : 100000000,'兆' : 1000000000000,'角' : 0.1,'分' : 0.01
}def cn2num(cn:str) -> float:ans = 0.0length = len(cn)start = 0if cn[0] in CN_UNIT:ans += CN_UNIT[cn[0]]start = 1for i in range(start, length, 1):if cn[i] in CN_NUM and cn[i + 1] in CN_UNIT:val, unit = CN_NUM[cn[i]], CN_UNIT[cn[i + 1]] ans += val * unitelse: continuereturn ansdef read_excel():global sheet1, wbwb = xlrd.open_workbook(filename=file) # 打开文件print(wb.sheet_names()) # 获取所有表格名字sheet1 = wb.sheet_by_index(0) # 通过索引获取表格print(sheet1)print(sheet1.name,sheet1.nrows,sheet1.ncols)# rows = sheet1.row_values(0)#获取行内容'''# test: print(rows)print(cols)print(sheet1.cell(1,0).value)#获取表格里的内容,三种方式print(sheet1.cell_value(1,0))print(sheet1.row(1)[0].value)
'''if __name__ == '__main__':read_excel()'''# test: print(cn2num('拾捌元零捌分'))print(cn2num('伍拾壹元肆角伍分'))print(cn2num('陆分'))print(cn2num('壹元柒角'))print(cn2num('贰角柒分'))print(cn2num('拾玖元伍角肆分'))'''# calculate sum of numberncols = sheet1.ncolsnrows = sheet1.nrowsans = 0.0for i in range(1, nrows):rows = sheet1.row_values(i)#获取行内容temp = cn2num(rows[0])ans += temp * float(rows[1])print(ans)print('%.2f' %ans)

python大写数字转阿拉伯数字脚本相关推荐

  1. python 汉字数字转阿拉伯数字

    主要用于大写数字转阿拉伯数字 CN_NUM = {'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九' ...

  2. 中文大写数字转换为阿拉伯数字(java)

    1.引言 昨天面试了微软的暑期实习生,二面的时候面试官给出了这道题,起初拿到题目的时候感觉还挺简单的,想着直接用遍历加一个缓存应该就能搞定了,但是和面试官沟通了一会儿之后发现自己没考虑到的还有很多,最 ...

  3. Python 中文(大写)数字转阿拉伯数字

    中文转数字,小数的化考虑点字进一步封装即可. # constants for chinese_to_arabic CN_NUM = {'〇' : 0, '一' : 1, '二' : 2, '三' : ...

  4. mysql大写数字转阿拉伯数字_阿拉伯数字转化为大写

    ``` //人民币金额转大写程序PHP版 //作者:大V[vsxp] $number = $_GET['num'] ? trim($_GET['num']) : 8421; echo Num2Cny: ...

  5. python 中文数字转换为阿拉伯数字

    数字为3位数字以内,如下: 一百八十四 一百四 一百十四 十四 四 十 一百 一百零一 对应python代码如下: numDict = {'一': 1, '二': 2, '三': 3, '四': 4, ...

  6. 金额大小写转化、阿拉伯数字转大写数字,大写数字转阿拉伯数字

    题:请写个程序,将类似下面的大写金额转化为阿拉伯数字. 大写金额样例:玖仟伍佰零玖亿壹佰零玖万玖仟伍佰壹拾捌元整. 实现方式: 1.先来一个看起来比较高大上的有技巧的更适合装逼的一种方式:利用函数 s ...

  7. Python中文数字转阿拉伯数字

    100以内 def number_C2E(ChineseNumber):"""中文数字转整形"""map = dict(〇=0, 一=1, ...

  8. cn2.php中文,Python使用cn2an实现中文数字与阿拉伯数字的相互转换

    工作中经常遇到阿拉伯数字转换称为中文数字或者大写金额,在网上搜了下,cn2an口碑较好,遂进行了一番学习. 安装 pip install cn2an 依赖库为setuptools.PyYAML 查看版 ...

  9. Python:中文数字转换为阿拉伯数字

    Python: 中文数字转换为阿拉伯数字 方法 代码 测试结果 方法 将中文数字字符串识别为一个个片段,每个片段包含数字和数位两部分,例如:"三千七百五十二"将被识别成" ...

最新文章

  1. 树莓派系统安装_树莓派系统安装
  2. SSAS分区数据量过大处理参考 转- Recommended Practices with Partitions and Aggregations
  3. 02 | Spring Data Common 之 Repository 如何全面掌握?
  4. SOL注入——基干联合查询的POST注入(四)
  5. JVM中GC Root对象有哪些?
  6. python标准输入_Python 处理标准输入
  7. 学习笔记--2014年7月7日
  8. PHP获取远程文件内容
  9. Win10下VB6.0开发之串口通信基础(一)控件属性篇
  10. linq to sql 系列之 linq to sql性能优化技巧
  11. 黑莓Z10忘记BBID密码导致手机锁定解决方案
  12. 计算机多道程序设计是指什么,多道程序设计是什么意思?
  13. PID调节参数的作用
  14. 聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传
  15. 数加平台协助汇合营销快速行动,捕获转瞬即逝的商机。
  16. 照片OCD问题,滑动窗口分类器,上限分析
  17. 2021年焊工(初级)新版试题及焊工(初级)复审模拟考试
  18. 学习前端的第三十二天——ES6
  19. 【计算机网络】计算机网络核心知识点
  20. 人脸检测和人脸识别的基础知识

热门文章

  1. 用自己的祖源成分数据与其他祖源成分数据做对比
  2. 学习RNN-part2
  3. 记录写博文用到的一些工具
  4. Python爬取中国大学排名,并且保存到excel中
  5. 程序员老了怎么办?做什么好?
  6. Android关于Firebase集成及示例及用法(开发反编译)
  7. 笔记本计算机作文,介绍笔记本电脑的作文600字
  8. i.MX - RT1052调教总结
  9. chroot启动mysql_使用Chroot解决PHP的运行安全问题
  10. 【Android】请求打开蓝牙和定位功能