扩展为在括号中包含负数:

In [1]: import locale, string

In [2]: from decimal import Decimal

In [3]: n = ['$1,234.56','-$1,234.56','($1,234.56)', '$ -1,234.56']

In [4]: tbl = string.maketrans('(','-')

In [5]: %timeit -n10000 [locale.atof( x.translate(tbl, '$)')) for x in n]

10000 loops, best of 3: 31.9 æs per loop

In [6]: %timeit -n10000 [Decimal( x.translate(tbl, '$,)')) for x in n]

10000 loops, best of 3: 21 æs per loop

In [7]: %timeit -n10000 [float( x.replace('(','-').translate(None, '$,)')) for x in n]

10000 loops, best of 3: 3.49 æs per loop

In [8]: %timeit -n10000 [float( x.translate(tbl, '$,)')) for x in n]

10000 loops, best of 3: 2.19 æs per loop

请注意,必须从float()/ Decimal()中去除逗号。带转换表的replace()或translate()均可用于将开头转换为(--,转换速度稍快。float()的速度最快为10-15倍,但缺乏精度,并且可能会出现语言环境问题。Decimal( )具有精度,比locale.atof()快50%,但也有语言环境问题,locale.atof()是最慢的,但最通用。

编辑:新的str.translateAPI(映射的字符None从str.translate函数移到转换表)

In [1]: import locale, string

from decimal import Decimal

locale.setlocale(locale.LC_ALL, '')

n = ['$1,234.56','-$1,234.56','($1,234.56)', '$ -1,234.56']

In [2]: tbl = str.maketrans('(', '-', '$)')

%timeit -n10000 [locale.atof( x.translate(tbl)) for x in n]

18 µs ± 296 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [3]: tbl2 = str.maketrans('(', '-', '$,)')

%timeit -n10000 [Decimal( x.translate(tbl2)) for x in n]

3.77 µs ± 50.8 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [4]: %timeit -n10000 [float( x.translate(tbl2)) for x in n]

3.13 µs ± 66.3 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

In [5]: tbl3 = str.maketrans('', '', '$,)')

%timeit -n10000 [float( x.replace('(','-').translate(tbl3)) for x in n]

3.51 µs ± 84.8 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

python写货币转换_如何在Python中将货币字符串转换为浮点数?相关推荐

  1. scala 字符串转换数组_如何在Scala中将十六进制字符串转换为字节数组?

    scala 字符串转换数组 Hex String in Scala denotes value in hexadecimal number system i.e. base 16 number sys ...

  2. json字符串导入oracle,如何在Oracle中将JSON字符串转换为JSON

    我需要在Oracle查询中将JSON字符串转换为JSON. 示例字符串: {"1":{"qid":1,"aid":1,"a&quo ...

  3. scala字符串转int_如何在Scala中将十六进制字符串转换为int?

    scala字符串转int The hex string is also known as Hexadecimal Number String is a number created using hex ...

  4. python ascii码16进制转换_如何在Python十六进制整数和ASCii编码的字符串之间进行转换...

    今天,我将与您分享一种将Python十六进制整数转换为ASCii编码的字符串的方法,该方法具有很好的参考价值,希望对大家有所帮助. 让我们一起关注小编,看看 当使用Pyserial与STM32通信时, ...

  5. python获取当前时间戳_如何在Python中获取当前时间戳?

    在Python中可以使用来自模块time.datetime或calendar的函数来获取当前时间戳,代码语句如[import time;ts = time.time() print(ts)]. 在Py ...

  6. python静态变量计数器_如何在Python中使用静态变量在计数

    今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题.如何在Python中使用静态变量来计数.然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量.说实话没 ...

  7. python右对齐 数字_如何在Python中右对齐数值数据?

    我有一些数据,我显示在3列格式,形式"键:值键:键:值键:值".这里有一个例子: p: 1 sl: 10 afy: 4 q: 12 lg: 10 kla: 3 r: 0 kl: 1 ...

  8. python 指定证书验证_如何在python中验证SSL证书?

    我需要验证我的自定义CA签署了证书.使用OpenSSL命令行实用程序很容易做到: # Custom CA file: ca-cert.pem # Cert signed by above CA: bo ...

  9. 如何用python写串口通信软件_如何用python写个串口通信的程序?

    展开全部 打开串口后启动一个线程来监听串口数据的进入,有数据时,就做数据的处理. 用python写串口通信e68a84e8a2ad32313133353236313431303231363533313 ...

最新文章

  1. php包含文件时显示空白页,php中添加了如下语句出现空白页 删除页面zhengchang
  2. 1 创建数据库连接对象 IDbConnection
  3. android中xml tools属性详解
  4. [HDU3691 Nubulsa Expo]
  5. 将json绑定为对象_了解自定义对象创建:JSON绑定概述系列
  6. 【OpenCV】OpenCV函数精讲之 -- 鼠标操作
  7. Dojo.Layout下的三个布局组件,浓缩精华
  8. Spring Boot 1.5.10 发布:修复重要安全漏洞!!!
  9. dedecms5.7添加栏目时以简拼作目录名 以拼音首字母作文件夹名称
  10. 微服务笔记(一) 搭建服务治理中心
  11. jQuery各种选择器总结
  12. Spring的ioc操作 与 IOC底层原理
  13. android动态加载assets,从android_assets文件夹动态加载dll
  14. html之使用session进行服务器之间的跳转以及记录
  15. 如何查看kali的详细ip地址网关_在Linux中检查默认网关或路由器IP地址的四个命令...
  16. IDEA突然没有SVN了是怎么回事
  17. Unity 引擎 Managed Stripping Level 遇到的坑
  18. Avril Lavigne: Complicated
  19. 什么叫首充?关于流量卡首充的说明!
  20. 求1到100之间所有能被3整除的整数的和

热门文章

  1. mysql链表_MySql链表语句--博客园老牛大讲堂
  2. java销售_销售转向java编程的开始之路
  3. beyond compare如何添加新文件并重新比较?
  4. python codecs模块(用于执行编码转换之类的)
  5. pycharm 怎么对代码进行性能分析,消耗时间time (Run -- Profile 'xxxx')
  6. Powershell基础(一)
  7. free 命令查看linux的内存使用情况
  8. linux防火墙操作命令
  9. zigbee抗干扰matlab仿真,基于Zigbee的扩频通信MATLAB仿真.doc
  10. python调用exe程序 传入参数_关于使用c#调用python脚本文件,脚本文件需要传递参数...