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)

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

Другие вопросы по тегам