如果字符串中有逗号作为数千个分隔符,如何使用Python将其转换为数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10142)

我有一个字符串,表示一个用逗号分隔数千个的数字。我如何将它转换成python中的一个数字?

>>> int("1,000,000")

生成一个ValueError...

在尝试转换逗号之前,我可以用空字符串替换逗号,但这感觉是不对的。有更好的办法吗?

提问于
用户回答回答于
import locale
locale.setlocale( locale.LC_ALL, 'en_US.UTF-8' ) 
locale.atoi('1,000,000')
# 1000000
locale.atof('1,000,000.53')
# 1000000.53
用户回答回答于

有几种方法可以解析带有数千个分隔符的数字。我怀疑~ubuntu所描述的方式在所有情况下都是最好的。所以我也列举了其他方法。

  1. 打电话的合适地点setlocale()__main__模块。它是全局设置,将影响整个程序,甚至是C扩展(尽管请注意LC_数值设置不是在系统级别设置,而是由Python模拟)。读文件中的注意事项走这条路之前要三思。在单个应用程序中,它可能是可以的,但不要在库中使用它来吸引更多的读者。您可能应该避免使用特定的字符集编码请求地区设置,因为它可能在某些系统中不可用。
  2. 使用第三方库进行国际化。例如比加允许使用影响整个过程的任何可用的区域设置wihtout(甚至在不使用locales的情况下使用特定数千个分隔符来解析数字): NumberFormat.createInstance(locale(‘en)_解析(“1,000,000”).getLong()
  3. 编写自己的解析函数,如果您没有安装第三方库来“正确地”实现它。它可以很简单int(data.replace(',', ''))当不需要严格的验证时。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励