使用逗号或点作为分隔符,将 Python 字符串明确转换为浮点数
- 2025-04-15 09:20:00
- admin 原创
- 32
问题描述:
如何明确告诉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(",", ".")
不安全,因为我不知道区域设置!
解决方案 1:
因为我不知道区域设置
locale
您可以使用模块来查找:
>>> 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)
解决方案 2:
您可以使用locale.atof
import locale
locale.atof('12.3')
http://docs.python.org/2/library/locale.html
解决方案 3:
您可以使用babel解析本地格式的小数:
>>> parse_decimal('1,099.98', locale='en_US')
Decimal('1099.98')
>>> parse_decimal('1.099,98', locale='de')
Decimal('1099.98')
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD