如何使用点或逗号作为小数分隔符明确告诉python读取十进制数?我不知道将运行我的脚本的PC的本地化设置,这不应该影响我的应用程序,我只想说:
f = read_float_with_point("3.14")
或
f = read_float_with_comma("3,14")
我认为写作
def read_float_with_comma(num):
return float(num.replace(",", ".")
不安全,因为我不知道区域设置!
答案 0 :(得分:12)
因为我不知道区域设置
您可以使用locale
module:
>>> locale.nl_langinfo(locale.RADIXCHAR)
'.'
或
>>> locale.localeconv()['decimal_point']
'.'
使用它,您的代码可能变为:
import locale
_locale_radix = locale.localeconv()['decimal_point']
def read_float_with_comma(num):
if _locale_radix != '.':
num = num.replace(_locale_radix, ".")
return float(num)
更好的是,同一模块有一个转换功能,称为atof()
:
import locale
def read_float_with_comma(num):
return locale.atof(num)
答案 1 :(得分:7)
答案 2 :(得分:2)
您可以使用babel以本地格式分析小数:
>>> parse_decimal('1,099.98', locale='en_US')
Decimal('1099.98')
>>> parse_decimal('1.099,98', locale='de')
Decimal('1099.98')