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

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

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

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

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

代码如下:

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

 # -*- coding=utf-8 -*-
# 18.10.29
# 文字数字(汉语)转数字
# 18.11.1
# 更新对'人民币贰仟陆佰玖拾陆万陆仟零捌拾元玖角贰分'这种小数的判断 cn_sum = {
'〇': '', '一': '', '二': '', '三': '', '四': '', '五': '', '六': '', '七': '', '八': '', '九': '', '零': '',
'壹': '', '贰': '', '叁': '', '肆': '', '伍': '', '陆': '', '柒': '', '捌': '', '玖': '', '貮': '', '两': '',
} cn_unit = {
'十': 10,
'拾': 10,
'百': 100,
'佰': 100,
'千': 1000,
'仟': 1000,
'万': 10000,
'萬': 10000,
'亿': 100000000,
'億': 100000000,
'兆': 1000000000000,
'角': 0.1,
'分': 0.01
} def chn_to_sum(chn):
# 传入字符串
sum = 0
lis = []
flo = False
str_flo = ''
for i in chn:
if flo:
if i in cn_sum:
str_flo += cn_sum[i]
if i in cn_unit:
lis.append(cn_unit[i])
else:
if i == '点':
flo = True
if i in cn_sum:
lis.append(cn_sum[i])
if i in cn_unit:
lis.append(cn_unit[i])
for k in range(len(lis)):
if k == len(lis)-1:
if str_flo:
sum += float('.'+str_flo)
if type(lis[k]) == str:
sum = sum+int(lis[k])
if type(lis[k]) in [int, float]:
if lis[k] > sum:
sum = (sum+int(lis[k-1]))*lis[k]
else:
sum = sum + (int(lis[k-1])*lis[k]) return round(sum, 2)

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

将文字数字转阿拉伯数字(Python)的更多相关文章

  1. C# 阿拉伯数字转换为中文数字/中文数字转换为阿拉伯数字

    项目中经常会格式化数据,转换数字的使用情况比较多,记录一下数字转换的方法! 如果需要转换为繁体中文,将数组里的汉字换成繁体中文即可. 1.阿拉伯数字转换为中文数字 /// <summary> ...

  2. Python 中文数字转阿拉伯数字

    #只能转数字,传参中包含非数字会错. def t(str): zhong={'零':0,'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9}; ...

  3. Python 中文(大写)数字转阿拉伯数字(转)

    # constants for chinese_to_arabic CN_NUM = { '〇' : 0, '一' : 1, '二' : 2, '三' : 3, '四' : 4, '五' : 5, ' ...

  4. 猜数字游戏--基于python

    """题目:练习使用python写一个猜数字的游戏,数字范围0-100,每次猜错,需要给出缩小后的范围,每个人只有10次的猜测机会,猜测机会用完游戏结束!"&q ...

  5. 使用opencv调用24*24点阵字库和8*16ASCII字库在图片显示文字数字

    课程实验:编程读汉字点阵字库,把自己的名字和学号叠加到图片的右下位置. 主要步骤分为三部分 第一部分:读取图片(文件读取) 第二部分:读取文字并从字库中提取相应的编码(字库的存储原理) 第三部分:将相 ...

  6. 【LeetCode】面试题62. 圆圈中最后剩下的数字 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 约瑟夫环 日期 题目地址:https://leetco ...

  7. Java实现中文数字转换为阿拉伯数字

    /** * 中文數字转阿拉伯数组[十万九千零六十 --> 109060] * @author 雪见烟寒 * @param chineseNumber * @return */ @Suppress ...

  8. 数字和表达式(python)

    >>>2+2 4 >>>1/2#(注:3.0版本之前是这样的,整数除法) >>>1.0/2.0 0.5 >>>1.0/2 0.5 ...

  9. 语音转文字小工具开发Python

    # -*- coding: utf- -*- import requests import re import os import time from aip import AipSpeech fro ...

随机推荐

  1. js动态修改Easyui元素不生效,EasyUI动态渲染解析解决方案

    easyui的渲染是在在网页加载完成后,相当于在$(document).ready()事件中,对整个网页进行了一次扫描,发现某个input标签含有easyui的属性,就在相应的地方进行ui的修改.因此 ...

  2. Dapper.net Insert mssql unicode 乱码问题

    1.效果: 2.处理方法: /// <summary> /// insert single sql /// </summary> /// <typeparam name= ...

  3. HttpClient 测试web API上传文件实例

    1.使用HttpClient 测试上传文件并且设置header信息: using Lemon.Common; using Newtonsoft.Json; using System; using Sy ...

  4. LinkedQueue的底层实现

    package zy813ture; public class MyLinkedQueue1 { private Node head; private Node last = head = new N ...

  5. 电脑丢失api-ms-win-core-libraryloader-|1-1-1.dll怎么办

    电脑从win7升级到win10,到98%的时候提示说丢失.dll,如图,我是64位系统,怎么解决这个问题呢?在脚本之家下载了 放到system32中也没有用,在线等,谢谢! 用C:\Windows\S ...

  6. 第六天-request response\13-request乱码.avi;

    疑问:提交为POST时 ,request为什么不放在Post里面处理呢? 服务器已经启动后,修改html的代码不需要重启服务器就可以生效 :超链接中有中文,也是需要像get那样 通过该配置文件可以解决 ...

  7. VMware 11安装Mac和Linux

    VMware 11安装Mac OS X 10.10_百度经验 https://jingyan.baidu.com/article/ff411625b9011212e48237b4.html?qq-pf ...

  8. js中创建数组,并往数组里添加元素

    数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...

  9. Django中的csrf基础了解

    简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有 ...

  10. Linux 磁盘分区,文件系统创建、挂载、开机自动挂载和卸载

    创建分区 (fdisk): 第一步先在Linux的虚拟机上添加一块硬盘,添加完成后需要重启虚拟机才能够检测识别到新硬盘. 重启系统后可以使用 fdisk -l 命令查看当前所有磁盘分区情况,sdb为我 ...