Jython: синтаксический анализ текста с плавающей точкой, содержащей запятые
Как я могу разобрать поплавок, отсканированный с листа, как текст, содержащий запятые?
txt = "1,903.44"
value = float(txt) # This fails due to ',' in string
ОБНОВЛЕНИЕ: Извините, я не был ясен. Я использую Jython 2.5, который не имеет модуля локали.
4 ответа
txt = "1,903.44"
value = float(txt.replace(',', ''))
Если вам нужна локализация, это не сработает, но поможет, если вы знаете, что запятые - это ваши разделители.
Вы можете снять запятые:
txt = txt.replace(',', '')
value = float(txt)
Использование locale.atof()
после locale.setlocale(locale.LC_ALL, '')
,
Я бы лично использовал десятичный пакет при работе с денежными значениями, чтобы избежать хорошо документированных ловушек, возникающих при использовании чисел с плавающей запятой.
from decimal import Decimal
txt = txt.replace (',', '')
value = Decimal(txt)
Как отмечалось другими авторами, это работает только в том случае, если известно, что в вашей локали используется "," в качестве разделителя тысяч, но вы должны двигаться в правильном направлении.