• 将文字数字转阿拉伯数字(Python)


    今天改进爬虫的时候有这样的需求,如果是文字的数字把他转化成数字存储。

    然后百度了一下没什么能看的博客。

    其实挺无奈的,搜出来的博客全是一样的代码,有的图都是COPY,尤指CSDN,博客质量大多很差。怀疑博主转的时候试了没?

    这样COPY还不如不发,恶心。

    于是自己写了代码,目前测试几例没什么问题,如果出现不规则的如”一二三四五万“这种会出现问题,不过这种本来就不符合规范

    代码如下:

    # 18.11.1更新,加入对诸如'人民币贰仟陆佰玖拾陆万陆仟零捌拾元玖角贰分'这种小数的判断

     1 # -*- coding=utf-8 -*-
     2 # 18.10.29
     3 # 文字数字(汉语)转数字
     4 # 18.11.1
     5 # 更新对'人民币贰仟陆佰玖拾陆万陆仟零捌拾元玖角贰分'这种小数的判断
     6 
     7 cn_sum = {
     8     '': '0', '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9', '': '0',
     9     '': '1', '': '2', '': '3', '': '4', '': '5', '': '6', '': '7', '': '8', '': '9', '': '2', '': '2',
    10 }
    11 
    12 cn_unit = {
    13     '': 10,
    14     '': 10,
    15     '': 100,
    16     '': 100,
    17     '': 1000,
    18     '': 1000,
    19     '': 10000,
    20     '': 10000,
    21     '亿': 100000000,
    22     '': 100000000,
    23     '': 1000000000000,
    24     '': 0.1,
    25     '': 0.01
    26 }
    27 
    28 
    29 def chn_to_sum(chn):
    30     # 传入字符串
    31     sum = 0
    32     lis = []
    33     flo = False
    34     str_flo = ''
    35     for i in chn:
    36         if flo:
    37             if i in cn_sum:
    38                 str_flo += cn_sum[i]
    39             if i in cn_unit:
    40                 lis.append(cn_unit[i])
    41         else:
    42             if i == '':
    43                 flo = True
    44             if i in cn_sum:
    45                 lis.append(cn_sum[i])
    46             if i in cn_unit:
    47                 lis.append(cn_unit[i])
    48     for k in range(len(lis)):
    49         if k == len(lis)-1:
    50             if str_flo:
    51                 sum += float('.'+str_flo)
    52             if type(lis[k]) == str:
    53                 sum = sum+int(lis[k])
    54         if type(lis[k]) in [int, float]:
    55             if lis[k] > sum:
    56                 sum = (sum+int(lis[k-1]))*lis[k]
    57             else:
    58                 sum = sum + (int(lis[k-1])*lis[k])
    59 
    60     return round(sum, 2)

    发现问题请提醒我,希望可以帮到你

  • 相关阅读:
    爬虫简介
    MongoDb安装pymongo和mongoengine使用
    简单使用WebSocket实现聊天室
    DBUtils
    FLASK 的Session和MoudelForm插件
    第十一篇 CBV和闪现
    HDOJ 4699 Editor 对顶栈
    [NOI1999]内存分配
    横截面图
    STL List Set
  • 原文地址:https://www.cnblogs.com/chnmig/p/9870996.html
Copyright © 2020-2023  润新知