阿拉伯数字转换成中文大写,中文货币的表达方式 python

最近在qq群经常看到一个题目,网上查找资料发现,有人实现了一半内容,都是在处理0的问题上卡住了,自己就尝试用刚开始学习的python写了一下。python处理这个问题还是比较方便。

题目:

代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#转换
import re
chd = {‘ ‘:‘m‘,‘0‘:‘零‘,‘1‘:‘壹‘,‘2‘:‘贰‘,‘3‘:‘叁‘,‘4‘:‘肆‘,‘5‘:‘伍‘,‘6‘:‘陆‘,‘7‘:‘柒‘,‘8‘:‘捌‘,‘9‘:‘玖‘}
und = {‘S‘:‘拾‘,‘B‘:‘佰‘,‘Q‘:‘仟‘,‘W‘:‘万‘,‘Y‘:‘亿‘}

#判断输入内容(首位不为零的整数)
ips = raw_input(‘Please input a number: ‘)
while ips[0] == ‘0‘:
    ips = raw_input(‘Wrong,the first non-zero: ‘)
else:
    while ips.isdigit():
        break
    else:
        ips = raw_input(‘Wrong,please input a number: ‘)
if len(ips) <= 9:
    #输出9位字符,右对齐,补空格
    ips = ips.rjust(9) 
    #转换成大写
    ops = chd[ips[0]]+und[‘Y‘]+chd[ips[1]]+und[‘Q‘]+chd[ips[2]]+und[‘B‘]+chd[ips[3]]+und[‘S‘]+chd[ips[4]]+und[‘W‘]+chd[ips[5]]+und[‘Q‘]+chd[ips[6]]+und[‘B‘]+chd[ips[7]]+und[‘S‘]+chd[ips[8]]+‘元‘
    #无用的数字位替换为空
    ops = re.sub(‘(m...)+‘,‘‘,ops)
    #处理零
    ops = re.sub(‘零元$‘,‘元‘,ops)
    ops = re.sub(‘零万‘,‘万‘,ops)
    ops = re.sub(‘(零...)+‘,‘零‘,ops)
    ops = re.sub(‘零万‘,‘万‘,ops)
    ops = re.sub(‘零元$‘,‘元‘,ops)
    print ops
else:
    print ‘The number is too big.‘

测试发现正则部分不全面,修改如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#转换
import re
chd = {‘ ‘:‘m‘,‘0‘:‘零‘,‘1‘:‘壹‘,‘2‘:‘贰‘,‘3‘:‘叁‘,‘4‘:‘肆‘,‘5‘:‘伍‘,‘6‘:‘陆‘,‘7‘:‘柒‘,‘8‘:‘捌‘,‘9‘:‘玖‘}
und = {‘S‘:‘拾‘,‘B‘:‘佰‘,‘Q‘:‘仟‘,‘W‘:‘万‘,‘Y‘:‘亿‘}

#判断输入内容(首位不为零的整数)
ips = raw_input(‘Please input a number: ‘)
while ips[0] == ‘0‘:
    ips = raw_input(‘Wrong,the first non-zero: ‘)
else:
    while ips.isdigit():
        break
    else:
        ips = raw_input(‘Wrong,please input a number: ‘)
if len(ips) <= 9:
    #输出9位字符,右对齐,补空格
    ips = ips.rjust(9) 
    #转换成大写
    ops = chd[ips[0]]+und[‘Y‘]+chd[ips[1]]+und[‘Q‘]+chd[ips[2]]+und[‘B‘]+chd[ips[3]]+und[‘S‘]+chd[ips[4]]+und[‘W‘]+chd[ips[5]]+und[‘Q‘]+chd[ips[6]]+und[‘B‘]+chd[ips[7]]+und[‘S‘]+chd[ips[8]]+‘元‘
    #无用的数字位替换为空
    ops = re.sub(‘(m...)+‘,‘‘,ops)
    #处理零
    ops = re.sub(‘零元$‘,‘元‘,ops)
    ops = re.sub(‘零万‘,‘万‘,ops)
    ops = re.sub(‘(零...)+‘,‘零‘,ops)
    ops = re.sub(‘亿零万‘,‘亿零‘,ops)
    ops = re.sub(‘零万‘,‘万‘,ops)
    ops = re.sub(‘零元$‘,‘元‘,ops)
    ops = re.sub(‘亿零元$‘,‘亿元‘,ops)
    print ops
else:
    print ‘The number is too big.‘
时间: 2024-10-09 01:07:00

阿拉伯数字转换成中文大写,中文货币的表达方式 python的相关文章

阿拉伯数字转换成中文大写

package Demo;public class Money{ public static void main(String args[]) { Money mon = new Money(); System.out.println(mon.change("124")); } //把"1"转化成1时用下标找TOBIG[1]就是对应的 private static final String[] TOBIG = new String[] { "零"

oracle改进之将阿拉伯数字转换成中文数字

本博客是自己在学习和工作途中的积累与总结. 将阿拉伯数字转换成中文汉字,方法自定义函数 create or replace function formate(val in number) return varchar2 is res varchar2(6); begin if val=1 then res:='一'; elsif val=2 then res:='二'; elsif val=3 then res:='三'; elsif val=4 then res:='四'; elsif val

Android:在设置Button上面的内容(含字母时)字母被强制转换成了大写

之前Button中的内容一直是中文,今天无意用了英文,偶然发现设置Button上面的内容(含字母时)字母被转换成了大写. 原因有可能是:Android 5.0的sdk在新建项目时的默认主题是android:theme="@style/AppTheme"的关系.当我把主题删掉后,回复正常了. 解决的办法有: 1.修改主题样式 2.在设置Button内容是加上android:textAllCaps="false",使其不会自动转换为大写 默认情况下(字母被转换成了大写)

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

JS实现金额转换(将输入的阿拉伯数字)转换成中文

// 数字转化为中文大写 number_chinese:function (str) { var num = parseInt(str); var strOutput = "", strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; num += "00"; var intPos = num.indexOf('.'); if (intPos >= 0){ num = num.substring(0, intPos) + num.substr(intPos +

Java金额转换_阿拉伯数字转换成中国传统形式

这个题目我在网上看到有好多种做法,我自己也想出了一种做法:不过因为时间不够,只能转换整数,没把角分弄进去. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* * 思路: * 1.定义两张表,存储中文数字和货币单位. * 2.键盘录入使用IO流的BufferedReader进行接收键盘录入. * 3.把录入的阿拉伯数字弄成字符数组,把每个数字所在位置的角标对

爪哇国新游记之二十----将数字转换成汉子大写形式

/** * 辅助类 * 用于记载字符和位置 * */ class CharPos{ char c; int pos; public CharPos(char c,int pos){ this.c=c; this.pos=pos; } } /** * 将数字转化成汉字大写形式 * */ public class CnNumMaker { private String integerPart;// 整数部分 private String decimalPart;// 小数部分 private Sta

将阿拉伯数字转换成中文的php函数

function toChinaseNum($num){ $char = array("零","一","二","三","四","五","六","七","八","九"); $dw = array("","十","百","千",&qu

PHP怎么把经过UTF-8编码的中文字符转换成正常的中文

问题的场景: html 为utf-8编码<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> form 产生一些中文输入项提交到后台: 后台通过file_get_contents('php://input');接收 使用var_dump,echo 等显示接收字符串为 utf-8形式,通过iconv()转换,结果依然如此: 后使用urldecode() 后,能正常显示中文.前