python数字转中文字符_Python实现中文数字转换为阿拉伯数字的方法示例

本文实例讲述了Python实现中文数字转换为阿拉伯数字的方法。分享给大家供大家参考,具体如下:

一、需求

今天写了三千二百行代码。

今天写了3200行代码。

两行意思相同,只是表达方式不太能够,统一掉。

二、原理

数字的特征是 数字 + 单位,例如三百,四十二,九千零二

可以从后往前遍历,遇到的是0到9的数字,就乘以前一位的单位,遇到新的单位(十百千万)就替换成数字供下一个数字用。

三、举例

五百四十三

1. 三-->3 3 <10 : total = 3

2. 十-->10, 10 ≥10,且不为0 : r = 10

3. 四-->4, 4<10 : total = 3 + 4*10 = 43

4. 百-->100, 10 0≥10,且不为0 : r = 100

5. 五-->5, 5<10 : total = 43 + 5*100 = 543

四、参考代码

#-*- coding: cp936 -*-

import re

import string

common_used_numerals_tmp ={'零':0, '一':1, '二':2, '两':2, '三':3, '四':4, '五':5, '六':6, '七':7, '八':8, '九':9, '十':10, '百':100, '千':1000, '万':10000, '亿':100000000}

common_used_numerals = {}

for key in common_used_numerals_tmp:

common_used_numerals[key.decode('cp936')] = common_used_numerals_tmp[key]

def chinese2digits(uchars_chinese):

total = 0

r = 1 #表示单位:个十百千...

for i in range(len(uchars_chinese) - 1, -1, -1):

val = common_used_numerals.get(uchars_chinese[i])

if val >= 10 and i == 0: #应对 十三 十四 十*之类

if val > r:

r = val

total = total + val

else:

r = r * val

#total =total + r * x

elif val >= 10:

if val > r:

r = val

else:

r = r * val

else:

total = total + r * val

return total

print chinese2digits('两百三十二'.decode('cp936'))

print "-------------------------"

print chinese2digits('十二'.decode('cp936'))

print "-------------------------"

print chinese2digits('一亿零八万零三百二十三'.decode('cp936'))

结果:

2017526120117665.png?20174261228

PS:这里再为大家提供几款数字转换相关工具供大家参考使用:

人民币大写在线转换工具:http://tools.jb51.net/zhuanhuanqi/rmbupper

在线阿拉伯数字翻译成英文工具:http://tools.jb51.net/transcoding/num2english

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python实现中文数字转换为阿拉伯数字的方法示例

本文地址: http://www.cppcns.com/jiaoben/python/192246.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调程序时的小错误

1.未能找到类型或命名空间名称“Form1”(是否缺少 using 指令或程序集引用?) 应该是复制代码的时候&#xff0c;把程序入口处的命名空间和Form1的命名空间不一致 2.检索 COM 类工厂中 CLSID 为 {XXXX-XXXX-XXX-XXXXX-XXX} 的组件时失败&#xff0c;原因是出现以下错误: 80040…

eclipse中设置Linux编码环境,更改eclipse中console编码

1.在eclipse.ini的-vmargs下面加上「-Dfile.encodingUTF-8」。2.eclipse-->Window-->Preferences-->General-->Workspace-->Text file encoding-->UTF-83.Installed JREs-->Default VM Arguments:-->-Dfile.encodingUTF-84.eclipse-->Run-->Run …

[记录] JavaScript 中的BOM操作

转载于:https://www.cnblogs.com/yuxi2018/p/9520059.html

GC对吞吐量和延迟的影响

每个Java应用程序都必须解决的一种类型的问题与垃圾回收有关。 当垃圾收集器工作时&#xff0c;它代表了一项奇妙的发明。 如果不是这样&#xff0c;或者GC做家务的方式变得不可预测&#xff0c;那么您就有一个朋友变成了敌人。 这篇文章是关于垃圾收集暂停时间的。 或更准确地…

linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错

我在linux服务器上运行不同的r程序。程序因数据库连接失败而出现以下错误&#xff1a; -1: In odbcDriverConnect(paste0("DRIVER{SQL Server}; server", server,: [RODBC] ERROR: state 08001, code 0, message[unixODBC][FreeTDS][SQL Server]Unable to connect to…

高级cmd攻击命令_一步一步学习DVWA渗透测试(Command Injection命令行注入)-第七次课...

各位小伙伴&#xff0c;今天我们继续学习Command Injection&#xff0c;翻译为中文就是命令行注入。是指通过提交恶意构造的参数破坏命令语句结构&#xff0c;从而达到执行恶意命令的目的。在OWASP TOP 10中一种存在注入漏洞&#xff0c;最常见的就是SQL和命令行注入。PHP开发的…

IDEA插件之 CodeGlance

在编辑代码最右侧&#xff0c;显示一块代码小地图 这款插件使用效果图如下&#xff0c;个人感觉还是有点用处&#xff0c;滚动条太小&#xff0c;有这个地图&#xff0c;拖动起来更加方便一点 原文地址:http://tengj.top/2017/02/22/idea1-1/转载于:https://www.cnblogs.com/al…

移动端图片上传方法

移动端图片上传方法 实现效果 文件下载 http://files.cnblogs.com/files/sntetwt/移动端图片上传.rar 实现步骤 一、隐藏<input type"file" id"file" name"Filedata" style"display:none;" accept"image/*" /> 二、…

SQL UPDATE with INNER JOIN

mysql - SQL UPDATE with INNER JOIN - Stack Overflowhttps://stackoverflow.com/questions/14491042/sql-update-with-inner-join MySQL UPDATE JOIN | Cross-Table Update in MySQLhttp://www.mysqltutorial.org/mysql-update-join/ 转载于:https://www.cnblogs.com/rgqancy…

linux 29900端口,USB2.0接口100M以太网芯片SR9900(A)的应用

1&#xff1a;SR9900A和SR9900有啥区别&#xff1a;(就是同一颗料)SR9900A默认随机MAC地址&#xff1a;00E0XXXXXXXXXXSR9900默认纯0MAC地址&#xff1a;000000000000都可以二次烧录MAC地址的… 如果SR9900没货用SR9900A没问题的&#xff0c;但是SR9900A没货&#xff0c;用SR99…

easyui常见问题

1.EasyUI的combobox可以看到选项但是不能选择怎么办 检查一下绑定的字段是否名称一样&#xff0c;valueField:id,textField:name&#xff0c;主要检查valueField $(#contentsName).combotree({panelHeight: auto,panelMaxHeight: 200,multiple: false,required: false,editable…

c语言最大公约数和最小公倍数_五年级奥数课堂之七:公因数和公倍数

乘积尾0的个数公因数和公倍数的基本概念公因数的释义给定若干个整数&#xff0c;如果有一个(些)数是它们共同的因数&#xff0c;那么这个(些)数就叫做它们的公因数。而全部公因数中最大的那个&#xff0c;称为这些整数的最大公因数。公约数与公倍数相反&#xff0c;就是既是A的…

RxJava:从未来到可观察

大约4年前&#xff0c;我第一次在Matthew Podwysocki的博客上遇到了Reactive Extensions &#xff0c;但是直到我几周前看到Matthew在Code Mesh上发表演讲之后&#xff0c;我才对它有所了解。 它似乎最近变得越来越流行&#xff0c;我注意到&#xff0c;现在有一个由Netflix编…

手机站CSS

手机web——自适应网页设计&#xff08;html/css控制&#xff09;内核&#xff1a;-ms- /* IE 9 */-moz- /* Firefox */-webkit- /* Safari and Chrome */-o- /* Opera */一. 网页宽度自动适应手机屏幕的宽度&#xff0c;在head标签内加上以下内容&#xff1a;<meta na…

linux的kerne启动过程,linux

333.6Khttp://www.vuse.vanderbilt.edu/~srs/linux-papers-talks/iee-2002.pdfvuse.vanderbilt.edu全网免费399.3Khttp://www.stillhq.com/pdfdb/000478/data.pdfstillhq.com全网免费333.6Khttp://www.researchgate.net/profile/Gillian_Heller/publication/220386856_Maintain…

设计模式(五)--工厂模式汇总

LZ想把简单工厂模式、工厂方法模式和抽象工厂模式整理到一篇博文当中&#xff0c;由浅入深&#xff0c;应该能方便理解和记忆&#xff0c;话不多说&#xff0c;进入正题。 一、简单工厂模式 定义&#xff1a;从设计模式的类型上来说&#xff0c;简单工厂模式是属于创建型模式&a…

如何估算内存消耗?

这个故事可以追溯到至少十年之前&#xff0c;当时我第一次接触PHB时遇到一个问题&#xff1a;“在生产部署中&#xff0c;我们需要购买多大服务器”。 我们正在构建的新的&#xff0c;闪亮的系统距离生产开始还有9个月的时间&#xff0c;显然该公司已承诺提供包括硬件在内的整个…

python爬取b站403_Python如何爬取b站热门视频并导入Excel

代码如下 #encoding:utf-8 import requests from lxml import etree import xlwt import os # 爬取b站热门视频信息 def spider(): video_list [] url "https://www.bilibili.com/ranking?spm_id_from333.851.b_7072696d61727950616765546162.3" html requests.g…

url文件的格式

[DEFAULT]BASEURL[InternetShortcut]URLWorkingDirectoryShowCommandIconIndexIconFileModifiedHotKey  其中BASEURL、URL和WorkingDirectory这3项的含义是不言而明的。ShowCommand规定Internet Explorer启动后窗口的初始状态&#xff1a;7表示最小化&#xff0c;3表示最大化…

vscode 编辑器常用快捷键

最近&#xff0c;打算换个编辑器&#xff0c;而 vscode 是一个不错的选择。大部分快捷键和 sublime 还是很像的&#xff0c;但有些也不一样。特此整理一份小笔记。 参考&#xff1a; vscode: Visual Studio Code 常用快捷键非常全的VsCode快捷键常用快捷键 主命令&#xff1a;c…