Как преобразовать строку в число, если это имеет запятые в нем как тысячи разделителей?

Я также использовал Панель Отладки .

76
задан martineau 6 March 2019 в 21:45
поделиться

2 ответа

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
93
ответ дан 24 November 2019 в 11:16
поделиться

Есть несколько способов синтаксического анализа чисел с разделителями тысяч. И я сомневаюсь, что способ, описанный @unutbu, лучший во всех случаях. Вот почему я перечисляю и другие способы.

  1. Правильное место для вызова setlocale () находится в модуле __ main __ . Это глобальная настройка, которая повлияет на всю программу и даже расширения C (хотя обратите внимание, что настройка LC_NUMERIC не установлена ​​на системном уровне, а эмулируется Python). Прочтите предостережения в документации и дважды подумайте, прежде чем идти этим путем. Возможно, это нормально для отдельного приложения, но никогда не используйте его в библиотеках для широкой аудитории. Вероятно, вам следует избегать запроса локали с какой-либо конкретной кодировкой, поскольку она может быть недоступна в некоторых системах.

  2. Используйте одну из сторонних библиотек для интернационализации. Например, PyICU позволяет использовать любой доступный языковой стандарт без влияния на весь процесс (и даже анализировать числа с определенными разделителями тысяч без использования языковых стандартов):

    NumberFormat.createInstance (Locale ('en_US')). Parse ( «1,000,000»). GetLong ()

  3. Напишите свою собственную функцию синтаксического анализа, если вы не знаете, что установить сторонние библиотеки, чтобы сделать это «правильно». Это может быть просто int (data.replace (',', '')) , когда строгая проверка не требуется.

35
ответ дан 24 November 2019 в 11:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: