деформатировать строку номера локали обратно в число - PullRequest
2 голосов
/ 21 февраля 2020

Я могу создать строку номера локали через

import locale
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
numberstring = '{0:n}'.format(number)

(я нашел это на ответ на этот стекопоток .)

Теперь у меня есть вход от пользователь. Я не знаю, является ли это допустимой строкой номера локали или нет. Если это так, я хочу преобразовать его в число. Если это не так, я хочу отправить сообщение об ошибке и позволить ему повторить попытку.

Какое наилучшее решение, то есть то, которое использует функции из библиотеки locale, предназначенные для этого? (Полагаю, это существует?)

1 Ответ

0 голосов
/ 21 февраля 2020

Не locale.delocalize не решает вашу проблему? Например:

import locale

locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
numberstring = '{0:n}'.format(1700.5)   # "1 700,5"
normalized = locale.delocalize(numberstring)  # "1700.5"
try:
    number = float(normalized)  # 1700.5
except ValueError:
    # Not a number
...