将美式分钟字符串转换为整数值

时间:2016-07-22 05:50:48

标签: python string type-conversion

我有一个美国格式的字符串,显示已经过的事件的秒数,例如4,942.221s。如何在不解析和删除逗号的情况下将其转换为整数的最pythonic方式。我希望获得简单的秒数,在这种情况下为4942,ms可以被截断。

2 个答案:

答案 0 :(得分:1)

您可以先使用float,然后转换为int,如下所示

>>>a= '4,942.221s'
>>>int(float(a.replace(',', '').replace('s','')))
>>>4942

答案 1 :(得分:1)

您可以使用locale库实现此目的,

  

允许程序员处理某些文化问题   应用程序,无需程序员知道所有   执行软件的每个国家/地区的具体信息。

通常,这将用于处理格式化字符串的某些问题,例如在对区域设置不可知的情况下,但是,如果您的系统支持美国英语区域设置,那么您可以执行以下操作,这有点hackey ,解决你的问题:

>>> import locale
>>> locale.setlocale(locale.LC_NUMERIC, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atoi('123,456,789')
123456789
>>> locale.atof('123,456.787')
123456.787
>>> locale.setlocale(locale.LC_NUMERIC, 'de_DE')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/juan/anaconda3/lib/python3.5/locale.py", line 595, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting
>>> american_string = '4,942.221s'
>>> int(locale.atof(american_string[:-1]))
4942

您可能必须弄清楚传递给setlocale函数的第二个参数的确切参数,因为它取决于您的系统。例如,请注意我尝试设置德语区域设置时的错误,该区域设置目前在我的系统上不受支持。如果您使用的是Ubuntu,则以下内容应该有效:sudo apt-get install language-pack-en-base