12

ポイントまたはコンマを小数点記号として使用して10進数を読み取るように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(",", ".")

ロケール設定がわからないため、安全ではありません。

4

3 に答える 3

14

ロケール設定がわからないので

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)
于 2012-11-13T14:07:12.157 に答える
11

使用できますlocale.atof

import locale
locale.atof('12.3')

http://docs.python.org/2/library/locale.html

于 2012-11-13T14:09:40.227 に答える
3

babelを使用して、ローカル形式の小数を解析できます。

>>> parse_decimal('1,099.98', locale='en_US')
Decimal('1099.98')
>>> parse_decimal('1.099,98', locale='de')
Decimal('1099.98')
于 2012-11-13T14:12:54.600 に答える