python - 使用逗号或点作为分隔符将 Python 字符串显式转换为 float

标签 python localization floating-point type-conversion

我如何明确告诉 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(",", ".")

不安全,因为我不知道区域设置!

最佳答案

because I don't know the locale settings

您可以使用 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)

关于python - 使用逗号或点作为分隔符将 Python 字符串显式转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362121/

相关文章:

Python 3.6 安装 statsmodels 失败,退出状态为 127

python - 基于 DataFrame 将参数传递给 stats.friedmanchisquare 的正确方法是什么?

.net - 州/地区/省命名约定

.net - 如何在 Excel 中将区域设置应用于十进制格式?

python - python的企业调度程序(如quartz)

python - SQL获取三列最高分不返回必填字段

c# - 在一个解决方案中引用多个项目的资源文件

c++ - 奇怪的汇编程序...这可能是我的应用程序崩溃的原因吗?

javascript - JavaScript 中 0.3 的字面表示

python - 按对象或两个 float 索引 python dict