Jessie.Y's Den

A blog for recoding life in pieces

Arvin.W, another owner.


WELCOME TO OUR WORLD

大写数字转换成阿拉伯数据

以下代码支持千亿以内的转换。

# -*- coding: utf-8 -*-

digits = {
u'一':1, u'二':2, u'三':3, u'四':4, u'五':5, u'六':6, u'七':7,
u'八':8, u'九':9, u'零':0
}

units = {u'十':10, u'百':10**2, u'千':10**3, u'万':10**4, u'亿':10**8}

def main(inputs):
    output = 0
    unit = 0
    midput = []
    for idx in xrange(len(inputs)-1, -1, -1):
        if inputs[idx] in units:
            unit = units[inputs[idx]]
            if unit == 10000 or unit == 100000000:
                midput.append(unit)
                unit = 1
        if inputs[idx] in digits:
            if unit:
                midput.append(digits[inputs[idx]] * unit)
                unit = 0
            else:
                midput.append(digits[inputs[idx]])
    if unit == 10:
        midput.append(unit)

    val, tmp = 0, 0
    for x in reversed(midput):
        if x == 10000 or x == 100000000:
            val += tmp * x
            tmp = 0
        else:
            tmp += x
    val += tmp
    return val

if __name__=='__main__':
    s = u'一百零二亿五千零一万零一千零三十八'
    print main(s)

最近的文章

mount()系统调用&mount命令

###问题背景最近一直在研究runv(一个符合OCI标准的基于KVM容器运行时)。我们的场景主要是深度学习计算平台,目前在实现一个分布式训练计算资源的过程中,涉及到nfs的mount操作。普通的linux mount命令可以正常运行,但是通过c的系统调用mount()则失败,报错信息为invalid argument。###分析过程####man 2 mountSYNOPSIS #include <sys/mount.h> int mount(const char *s...…

继续阅读
更早的文章

Generator in Python

​ 在Python中,带有yield关键字的函数被称之为generator(生成器)。何为yield,又何为generator呢?首先给出一个概念性的认识,后续给出相应的例子来进行阐述。​ 一个带有yield关键字的函数就是一个generator,它是函数,但是又和普通函数不同;生成一个generator,形式上像是函数调用,但是它不会执行任何函数代码,直到对它进行next()或者send(None)调用才会开始执行。虽然执行流程和函数执行流程一样,但是,每当...…

继续阅读