Python中如何实现中文数字转换成阿拉伯数字的方法示例

作者&投稿:用寿 (若有异议请与网页底部的电邮联系)
~
这篇文章主要介绍了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'))结果:


如何在Python中实现多文件编译
如果你要用到那个文件代码,就在主文件里写上import 举个例子 A.py B.py 我的主模块在A里,A要调用B里的函数或者类,那么在A中写import B.py 这样编译时就会编译用到B中的部分代码。另外说一句,我对python感觉是运行时用不到的代码,它就不编译。好像是编编译边执行的那种吧 ...

用python如何实现啊?
from random import randint class Shengfen(object):def __init__(self, sname):self.sname = sname def shengfen(self):print(self.sname)class Dijishi(Shengfen):def __init__(self, sname, dname):Shengfen.__init__(self, sname)self.dname = dname self.money = 10000 #现有钱数...

python如何实现 文件中查找上\/下一个字符串
用find()函数就可以 比如:fpr=open("你的文件名")n=0 for line in fpr:n+=1 if line.find("12efde")!=-1:pirnt n 你要的是这样话,你可以先把数据读到列表中,然后用for循环来实现,顺序查找就i增加,查找上一个i减少,查找到后用break结束就行了,百万行的确有点到,读到文本不...

如何使用Python实现并发编程
多线程几乎是每一个程序猿在使用每一种语言时都会首先想到用于解决并发的工具(JS程序员请回避),使用多线程可以有效的利用CPU资源(Python例外)。然而多线程所带来的程序的复杂度也不可避免,尤其是对竞争资源的同步问题。然而在python中由于使用了全局解释锁(GIL)的原因,代码并不能同时在多核上并发...

python干货:pop()函数的用法[弹出删除功能]
深入理解Python中不可或缺的pop()函数:弹出操作的艺术 在Python编程中,列表操作是数据处理的基石之一。弹出功能,也就是通过pop()函数,为列表赋予了动态性和灵活性。它形象地比喻为栈结构,通过删除元素,我们能轻松实现数据的进出和管理。基础操作:删除并返回最后一个元素 pop()方法的核心功能就是从...

python如何实现在列表中随机插入字母?
a = [1,2,3,4,5,6]先求出列表的长度 length = len(a)再从0到列表最大值中随机一个数字,决定往哪个位置插入 b = random.chrice(range(0,length))利用insert方法往随机出来的位置插入字母 a.insert(b,'A')望采纳

如何用python实现3的倍数?
以下是使用NumPy库创建一个位于20到100之间、是3的倍数的一组的Python代码:import numpy as np# 使用arange()函数创建一个从20到100(不包括100)的整数序列# 然后使用筛选条件选择其中能被3整除的数arr = np.arange(20, 100)[np.arange(20, 100) % 3 == 0]print(arr)解释一下代码:第一...

在Python中编程,如何实现不均等的概率?
"第一种情况"标记为'a', "第二种情况"标记为'b'; 70-30的出现几率为列表元素所占比例;列表元素乱序后逐一提取即可模拟按几率发生的各种情况 >>> import random >>> lst = ['a',]*7+['b',]*3 >>> lst ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b']>...

python3如何利用requests模块实现爬取页面内容的实例详解
$ sudo apt install python-pip安装成功,查看PIP版本:$ pip -V2.安装requests模块这里我是通过pip方式进行安装:$ pip install requests运行import requests,如果没提示错误,那说明已经安装成功了!检验是否安装成功3.安装beautifulsoup4Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。它...

pythonprint如何在输出中插入变量
Python中,将变量值插入到print输出中是通过print语句实现的。首先,你需要定义一个变量,例如a=6,Python会自动将其识别为整数类型,这与C语言有所不同。接着,使用print(变量名),即可显示变量的值。举个例子,完整的代码如下:如果你在Python2版本中,print语句的简单形式可能是printA,这相当于执行...

济宁市17829576665: python如何输入输出中文 -
南崔琥乙: 1,在文件夹中新建一个test.py的文件. 2,点击打开文件,输入以下代码: #!/usr/bin/env python # -*- coding: utf-8 -*- print u'中文测试正常'. 3,在文件夹下运行DOS界面. 4,输入test.py并运行,即可成功输入“中文测试正常”的中文字符.

济宁市17829576665: 怎么让python 输出中文 -
南崔琥乙: 以下代码运行通过 可以输出中文:s = 0 m = 0 for i in range(0, 100): s = s + 1 m = m + s print('\n所有数字的和等于:', m) 运行效果:

济宁市17829576665: 如何用Python实现阿拉伯数字转换英文数字 -
南崔琥乙: 办法很多,我这里介绍个用一个数组比如: numEn[10]={"zero","one","two","three","four","five","sixe","seven","eight","nine"}这样下标就对应字符了,比如你要把2变成“two”,就可以用numEn[2]得到

济宁市17829576665: Python做字符串简繁体转换有哪些实现思路 -
南崔琥乙: 需求:把中文字符串进行繁体和简体中文的转换;思路:引入简繁体处理库,有兴趣的同学可以研究一下内部实现,都是python写的1、下载zh_wiki.py及langconv zh_wiki.py:https://github.com/skydark/nstools/blob/master/zhtools/zh_wiki.py ...

济宁市17829576665: python 中怎么把类似这样的'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'转换成汉字输出 -
南崔琥乙: python2控制台输出会有这种情况,包括以下list里面的汉字虽然是utf8格式的但仍然不可见中文.只需要包要查看的list转为str并decode("string_escape") 例子为:li = [((33, 39), '宝马'), ((36, 39), '马')] print str(li).decode("string_escape") 输出就是可查看的样式 [((33, 39), '宝马'), ((36, 39), '马')]

济宁市17829576665: python 如何将乱码转成汉字 -
南崔琥乙: 1、python2与python3稍微有点区别2、python2中默认的字符编码格式都是unicode,在字符串前加'u',表示unicode 编码3、将unicode转换成中文,只需要用deconde解码就可以了>>> u='欢迎'>>> e=u.encode()>>> eb'\xe6\xac\xa2\xe8\xbf\x8e'>>> e.decode()#python3中默认就是utf-8编码'欢迎'>>> e.decode('gbk')#如果解码为gbk就是乱码'娆四繋' python2编码环境比较复杂,在这里不做详细说明

济宁市17829576665: 请教大家在python中怎样实现中文输出 -
南崔琥乙: 展开全部2.x 直接print u'中文'3.x应该可以print 中文了 碰到乱码,就先解码decode('来源字符编码'),再encode

济宁市17829576665: Python 3.5 如何对中文字符串进行处理 -
南崔琥乙: 在Python的string前面加上'r', 是为了告诉编译器这个string是个raw string,不要转意backslash '\' . 例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符.由于正则表达式和 \ 会有冲突,因此,当一个字符串使用了正则表达式...

济宁市17829576665: python正则表达式 从一行汉字中提取出数字 -
南崔琥乙: 描述的不是特别清楚 .re.sub("(?isu)省份_\s+", "省份", your_utf8_string)上面应该可以的. 当然也可以变型,比如下面 re.sub(u"(?isu)省份_\s{2}", u"省份", your_unicode_string)

济宁市17829576665: Python中如何将中文转换成ASCII -
南崔琥乙: >>> ab = '不显示职位月薪范围'>>> ab'不显示职位月薪范围'>>> ab.encode() b'\xe4\xb8\x8d\xe6\x98\xbe\xe7\xa4\xba\xe8\x81\x8c\xe4\xbd\x8d\xe6\x9c\x88\xe8\x96\xaa\xe8\x8c\x83\xe5\x9b\xb4'>>>

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网