die*_*ogb 10 python floating-point localization type-conversion
如何使用点或逗号作为小数分隔符明确告诉python读取十进制数?我不知道将运行我的脚本的PC的本地化设置,这不应该影响我的应用程序,我只想说:
f = read_float_with_point("3.14")
Run Code Online (Sandbox Code Playgroud)
要么
f = read_float_with_comma("3,14")
Run Code Online (Sandbox Code Playgroud)
我认为写作
def read_float_with_comma(num):
return float(num.replace(",", ".")
Run Code Online (Sandbox Code Playgroud)
不安全,因为我不知道语言环境设置!
Mar*_*ers 13
因为我不知道区域设置
您可以使用该locale模块查看:
>>> locale.nl_langinfo(locale.RADIXCHAR)
'.'
Run Code Online (Sandbox Code Playgroud)
要么
>>> locale.localeconv()['decimal_point']
'.'
Run Code Online (Sandbox Code Playgroud)
使用它,您的代码可能变为:
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)
Run Code Online (Sandbox Code Playgroud)
更好的是,同一模块有一个转换功能,称为atof():
import locale
def read_float_with_comma(num):
return locale.atof(num)
Run Code Online (Sandbox Code Playgroud)
您可以使用 locale.atof
import locale
locale.atof('12.3')
Run Code Online (Sandbox Code Playgroud)
http://docs.python.org/2/library/locale.html
| 归档时间: |
|
| 查看次数: |
11837 次 |
| 最近记录: |