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

Python 将美式分钟字符串转换为整数值,python,string,type-conversion,Python,String,Type Conversion,我得到了一个美国格式的字符串,显示了一个事件经过的秒数,比如4942.221s。如何在不解析和删除逗号的情况下将其转换为整数,这是最具python风格的方法。我想得到普通秒,在本例中为4942,ms可以被截断。您可以先使用float,然后转换为int,如下所示 >>>a= '4,942.221s' >>>int(float(a.replace(',', '').replace('s',''))) >>>4942 您可以使用库来实现这一点 允

我得到了一个美国格式的字符串,显示了一个事件经过的秒数,比如
4942.221s
。如何在不解析和删除逗号的情况下将其转换为整数,这是最具python风格的方法。我想得到普通秒,在本例中为
4942
,ms可以被截断。

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

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

您可以使用库来实现这一点

允许程序员以不同的方式处理某些文化问题 应用程序,而无需程序员了解所有 执行软件的每个国家/地区的详细信息

通常情况下,这将用于处理格式化字符串等问题,同时对区域设置不可知。但是,如果您的系统支持美式英语区域设置,则您可以执行以下操作来解决您的问题,这有点黑客行为:

>>> 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(locale.LC_NUMERIC'en_US.UTF-8') “恩_US.UTF-8” >>>locale.atoi('123456789') 123456789 >>>locale.atof('123456.787') 123456.787 >>>setlocale(locale.LC_NUMERIC'de_de') 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 setlocale中的文件“/home/juan/anaconda3/lib/python3.5/locale.py”,第595行 return\u setlocale(类别,区域设置) 区域设置。错误:不支持的区域设置 >>>美式字符串='4942.221s' >>>int(locale.atof(美式字符串[:-1])) 4942
您可能必须找出传递给
setlocale
函数的第二个参数的确切参数,因为它取决于您的系统。例如,请注意当我试图设置德语区域设置时出现的错误,我的系统目前不支持德语区域设置。如果您在Ubuntu上,以下操作应该可以使用:
sudo apt get install language pack en base

什么意思是“不删除逗号?”@juanpa.arrivillaga在德国,您不会用逗号分割大数,所以你不会说4723192.123,而是说4723182123。我知道不同地区的数字格式不同。我从您在另一个答案中的评论中看到,您可能正在搜索
locale
库功能。这对我来说是一个解决方案。谢谢你。我当时想的是一种通用的方法,根据时区使用数字格式。我还不知道python中有这样的机制,我想了解一下。