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
Есть несколько способов синтаксического анализа чисел с разделителями тысяч. И я сомневаюсь, что способ, описанный @unutbu, лучший во всех случаях. Вот почему я перечисляю и другие способы.
Правильное место для вызова setlocale ()
находится в модуле __ main __
. Это глобальная настройка, которая повлияет на всю программу и даже расширения C (хотя обратите внимание, что настройка LC_NUMERIC не установлена на системном уровне, а эмулируется Python). Прочтите предостережения в документации и дважды подумайте, прежде чем идти этим путем. Возможно, это нормально для отдельного приложения, но никогда не используйте его в библиотеках для широкой аудитории. Вероятно, вам следует избегать запроса локали с какой-либо конкретной кодировкой, поскольку она может быть недоступна в некоторых системах.
Используйте одну из сторонних библиотек для интернационализации. Например, PyICU позволяет использовать любой доступный языковой стандарт без влияния на весь процесс (и даже анализировать числа с определенными разделителями тысяч без использования языковых стандартов):
NumberFormat.createInstance (Locale ('en_US')). Parse ( «1,000,000»). GetLong ()
Напишите свою собственную функцию синтаксического анализа, если вы не знаете, что установить сторонние библиотеки, чтобы сделать это «правильно». Это может быть просто int (data.replace (',', ''))
, когда строгая проверка не требуется.