python打印出1~1000之间包含3的数字_如果使用Python将string转换为数字(如果它包含千位分隔符的逗号)?...

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

有几种方法可以用数千个分隔符来parsing数字。 我怀疑〜Ubuntu所描述的方式在所有情况下都是最好的。 这就是我列出其他方式的原因。

调用setlocale()的适当位置在__main__模块中。 这是全局设置,将影响整个程序甚至C扩展(尽pipe注意LC_NUMERIC设置不是在系统级设置,而是由Python模拟)。 阅读文档中的警告,并在这样做之前三思。 在单一的应用程序中可能是确定的,但是不要在库中用于广泛的用户。 可能你应该避免请求一些特定的字符集编码的区域设置,因为它可能在某些系统上不可用。

使用第三方库进行国际化。 例如, PyICU允许使用任何可用的语言环境,而不影响整个过程(甚至不使用区域设置来parsing具有特定数千个分隔符的数字):

NumberFormat.createInstance(区域设置( 'EN_US'))。分析( “百万”)。getLong()

编写你自己的parsing函数,如果你没有安装第三方库来做“正确的方法”。 当不需要严格validation时int(data.replace(',', ''))它可以像int(data.replace(',', ''))一样简单。

用空stringreplace逗号,并将结果string变成int或float 。

>>> a = '1,000,000' >>> int(a.replace(',' , '')) 1000000 >>> float(a.replace(',' , '')) 1000000.0

我从接受的答案中得到了语言环境错误,但在芬兰(Windows XP)这里有以下更改:

import locale locale.setlocale( locale.LC_ALL, 'english_USA' ) print locale.atoi('1,000,000') # 1000000 print locale.atof('1,000,000.53') # 1000000.53

这工作:

(一个肮脏但快速的方式)

>>> a='-1,234,567,89.0123' >>> "".join(a.split(",")) '-123456789.0123'

我试过这个。 它超出了这个问题:你得到一个input。 它将首先转换为string(如果它是一个列表,例如美丽的汤); 然后int,然后浮动。

它尽可能地得到。 在最坏的情况下,它返回所有未转换的string。

def to_normal(soupCell): ''' converts a html cell from beautiful soup to text, then to int, then to float: as far as it gets. US thousands separators are taken into account. needs import locale''' locale.setlocale( locale.LC_ALL, 'english_USA' ) output = unicode(soupCell.findAll(text=True)[0].string) try: return locale.atoi(output) except ValueError: try: return locale.atof(output) except ValueError: return output

>>> import locale >>> locale.setlocale(locale.LC_ALL, "") 'en_US.UTF-8' >>> print locale.atoi('1,000,000') 1000000 >>> print locale.atof('1,000,000.53') 1000000.53

这是在美国的Linux上完成的。 -Suresh

#python3 tenzin def changenum(data): foo = "" for i in list(data): if i == ",": continue else: foo += i return float(int(foo))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值