首页 > 编程知识 正文

python3字符串转数字(python字符串拼接)

时间:2023-05-04 16:59:55 阅读:318 作者:2898

最近有一个项目是用Python写的。其中一个要求是客户投入的资金,是数值型的。处理后变成中文,也就是输入123元,需要变成123元,这样才能被我们的智能语音机器人读取,被人类接受。

首先,我们应该知道阅读金钱的习惯:

1、1-9,会直接回到中文1-9,或者是传统。

2、10-19,念成十几个再返回,不要念成十几个。

3,20-99,读几十,返回。

4.一位数不要加什么,十位数加十位数,百位数加百位数,千位数加千位数。

5.四位数组,四位数后加‘10000’,八位数后加‘1亿’。由于项目中的业务原因,只需要支持到1000亿,也就是12位数的金额(即使不是那么高)。

6.如果金额值中有0个或0个以上的零,根据情况读取。如果0后有大于0的数字,转换成中文时加‘零’,否则什么都不加,比如101读101,100读100。

好吧,编码:

def num2cn2(数字,繁体=False):

'''

数字被转换成中文(简体和繁体,目前支持12位数)

:参数数字:

传统的参数: 33366336336

:return:

'''

如果传统:

Chinese_num={0: '零',1: '一',2: '二', '三',4: '四',5: '五',6: '地',7: '七。

Chinese_unit=['千','','拿起','百'

else:

Chinese_num={0: '零',1: '一',2: '二', '三',4: '四',5: '五',6: '六',7: '七。

Chinese_unit=['千','','十','百'

Extra_unit=[' ','一万','一亿']

num_list=list(字符串(数字))

num_cn=[]

Zero_num=0 #连续零的数量

Prev_num='' #遍历列表中当前元素的上一个位置。

长度=len(num_list)

对于num_list:中的num

tmp=数量

如果num=='0': #如果num为0,记录连续零的个数。

zero_num=1

num=' '

else:

零=' '

if零_num 0:

零='零'

zero_num=0

#处理前一位数字的数字读数为0,最后一位数字为1,在十位数上。

如果prev _ num in ('0 ','')和num==' 1 '和Chinese _ unit[长度% 4] in ('ten ',' pick ')3360

num=零中文单位[长度% 4]

else:

num=零Chinese _ num . get(int(num))Chinese _ unit[长度% 4]

如果长度% 4==1: #每四位数加‘一万’和‘一亿’拼接

如果num==' zero' :

num=extra_unit[length //4]

else:

num=extra_unit[length //4]

长度-=1

num_cn.append(数字)

prev_num=tmp

num_cn=' '。联接(num_cn)

返回num_cn

代码中的逻辑是以人类可读的形式编写的。因为python中的代码编写风格是缩进的,四个空格作为一位,所以下面的截图可以看得更清楚:

在Python控制台中测试它:

你认为我们生活中对金钱的正常解读是什么?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读