将语言环境数字字符串格式化回数字

deformat locale number string back to number

我可以通过

创建区域数字字符串
import locale
locale.setlocale(locale.LC_ALL, 'de_DE.utf8')
numberstring = '{0:n}'.format(number)

(我在 this Whosebug answer 上找到了这个。)

现在,我收到了用户的意见。我不知道它是否是有效的语言环境数字字符串。如果是,我想将其转换为数字。如果不是,我想发个错误让他重试

什么是最佳实践解决方案,即使用 locale 库中的功能的解决方案? (我想这确实存在?)

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