数字と貨幣

Numberモジュールは、異なる領域に対してフォーマットデジタルを設定する機能を提供します。これは任意の数字と通貨を含む。

デジタルフォーマット設定

babel.numbers.format_number(number, locale='en_US')

特定の領域のためにフォーマットされた所与の数字を返します。

>>> format_number(1099, locale='en_US')
u'1,099'
>>> format_number(1099, locale='de_DE')
u'1.099'

バージョン 2.6.0 で非推奨: Babel.nums.format_decimal()に変更します。

パラメータ
  • number -- フォーマットすべき数字

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

babel.numbers.format_decimal(number, format=None, locale='en_US', decimal_quantization=True, group_separator=True)

特定の領域のためにフォーマットされた所与の10進数を返す。

>>> format_decimal(1.2345, locale='en_US')
u'1.234'
>>> format_decimal(1.2346, locale='en_US')
u'1.235'
>>> format_decimal(-1.2346, locale='en_US')
u'-1.235'
>>> format_decimal(1.2345, locale='sv_SE')
u'1,234'
>>> format_decimal(1.2345, locale='de')
u'1,234'

各領域設定は、適切な千ビットパケットおよび小数セパレータを使用する:

>>> format_decimal(12345.5, locale='en_US')
u'12,345.5'

デフォルトの場合、許容領域設定は、高精度な数字のフォーマットモードを小数部分に強制することにより、高精度な数字を切断して丸め込む。属性はこの行為を迂回することができる. decimal_quantization パラメータ:

>>> format_decimal(1.2346, locale='en_US')
u'1.235'
>>> format_decimal(1.2346, locale='en_US', decimal_quantization=False)
u'1.2346'
>>> format_decimal(12345.67, locale='fr_CA', group_separator=False)
u'12345,67'
>>> format_decimal(12345.67, locale='en_US', group_separator=True)
u'12,345.67'
パラメータ
  • number -- フォーマットすべき数字

  • format --

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

  • decimal_quantization -- 高精度な数字を切断し、フォーマットモードに丸め込む。黙認する. True それがそうです。

  • group_separator -- 領域設定のためのデジタルフォーマットで成分スペーサのブール値をオン/オフする。

babel.numbers.format_currency(number, currency, format=None, locale='en_US', currency_digits=True, format_type='standard', decimal_quantization=True, group_separator=True)

フォーマットされた貨幣価値を返す。

>>> format_currency(1099.98, 'USD', locale='en_US')
u'$1,099.98'
>>> format_currency(1099.98, 'USD', locale='es_CO')
u'US$\xa01.099,98'
>>> format_currency(1099.98, 'EUR', locale='de_DE')
u'1.099,98\xa0\u20ac'

フォーマットはまた明示的に指定することができる。通貨の位置には‘というマークがあります。記号が繰り返されるにつれて、フォーマットが拡張されます(?記号ですか?通貨の略語ですか?貨幣の全称):?

>>> format_currency(1099.98, 'EUR', u'¤¤ #,##0.00', locale='en_US')
u'EUR 1,099.98'
>>> format_currency(1099.98, 'EUR', u'#,##0.00 ¤¤¤', locale='en_US')
u'1,099.98 euros'

通貨は一般的に特定の数の小さな数を持っている。この関数は、所与のフォーマットの情報よりも優先的である。

>>> format_currency(1099.98, 'JPY', locale='en_US')
u'\xa51,100'
>>> format_currency(1099.98, 'COP', u'#,##0.00', locale='es_ES')
u'1.099,98'

しかし,最後のパラメータを設定することで,通貨情報中の小さな数桁をカバーすることができる. False

>>> format_currency(1099.98, 'JPY', locale='en_US', currency_digits=False)
u'\xa51,099.98'
>>> format_currency(1099.98, 'COP', u'#,##0.00', locale='es_ES', currency_digits=False)
u'1.099,98'

フォーマットが指定されていない場合には、領域設定で使用する通貨フォーマットのタイプを指定することができる:

>>> format_currency(1099.98, 'EUR', locale='en_US', format_type='standard')
u'\u20ac1,099.98'

所与の通貨フォーマットタイプが利用できない場合、例外が開始される:

>>> format_currency('1099.98', 'EUR', locale='root', format_type='unknown')
Traceback (most recent call last):
    ...
UnknownCurrencyFormatError: "'unknown' is not a known currency format type"
>>> format_currency(101299.98, 'USD', locale='en_US', group_separator=False)
u'$101299.98'
>>> format_currency(101299.98, 'USD', locale='en_US', group_separator=True)
u'$101,299.98'

Format_type=“name”を転送して、長い表示名を使用することもできます。数字と通貨名の順序および通貨名の正確な現地化複数形式は、領域設定に応じて選択される:

>>> format_currency(1, 'USD', locale='en_US', format_type='name')
u'1.00 US dollar'
>>> format_currency(1099.98, 'USD', locale='en_US', format_type='name')
u'1,099.98 US dollars'
>>> format_currency(1099.98, 'USD', locale='ee', format_type='name')
u'us ga dollar 1,099.98'

デフォルトの場合、許容領域設定は、高精度な数字のフォーマットモードを小数部分に強制することにより、高精度な数字を切断して丸め込む。属性はこの行為を迂回することができる. decimal_quantization パラメータ:

>>> format_currency(1099.9876, 'USD', locale='en_US')
u'$1,099.99'
>>> format_currency(1099.9876, 'USD', locale='en_US', decimal_quantization=False)
u'$1,099.9876'
パラメータ
  • number -- フォーマットすべき数字

  • currency -- 貨幣コード.

  • format -- 使用するフォーマット文字列

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

  • currency_digits -- 貨幣を使う自然小数桁

  • format_type -- 使用する通貨フォーマットタイプ

  • decimal_quantization -- 高精度な数字を切断し、フォーマットモードに丸め込む。黙認する. True それがそうです。

  • group_separator -- 領域設定のためのデジタルフォーマットで成分スペーサのブール値をオン/オフする。

babel.numbers.format_percent(number, format=None, locale='en_US', decimal_quantization=True, group_separator=True)

特定の領域設定のフォーマットパーセント値に戻ります。

>>> format_percent(0.34, locale='en_US')
u'34%'
>>> format_percent(25.1234, locale='en_US')
u'2,512%'
>>> format_percent(25.1234, locale='sv_SE')
u'2\xa0512\xa0%'

フォーマットモードを明示的に指定することもできる:

>>> format_percent(25.1234, u'#,##0‰', locale='en_US')
u'25,123‰'

デフォルトの場合、許容領域設定は、高精度な数字のフォーマットモードを小数部分に強制することにより、高精度な数字を切断して丸め込む。属性はこの行為を迂回することができる. decimal_quantization パラメータ:

>>> format_percent(23.9876, locale='en_US')
u'2,399%'
>>> format_percent(23.9876, locale='en_US', decimal_quantization=False)
u'2,398.76%'
>>> format_percent(229291.1234, locale='pt_BR', group_separator=False)
u'22929112%'
>>> format_percent(229291.1234, locale='pt_BR', group_separator=True)
u'22.929.112%'
パラメータ
  • number -- the percent number to format

  • format --

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

  • decimal_quantization -- 高精度な数字を切断し、フォーマットモードに丸め込む。黙認する. True それがそうです。

  • group_separator -- 領域設定のためのデジタルフォーマットで成分スペーサのブール値をオン/オフする。

babel.numbers.format_scientific(number, format=None, locale='en_US', decimal_quantization=True)

特定の領域に科学記数法でフォーマットされた返り値を設定する.

>>> format_scientific(10000, locale='en_US')
u'1E4'

フォーマットモードを明示的に指定することもできる:

>>> format_scientific(1234567, u'##0.##E00', locale='en_US')
u'1.23E06'

デフォルトの場合、許容領域設定は、高精度な数字のフォーマットモードを小数部分に強制することにより、高精度な数字を切断して丸め込む。属性はこの行為を迂回することができる. decimal_quantization パラメータ:

>>> format_scientific(1234.9876, u'#.##E0', locale='en_US')
u'1.23E3'
>>> format_scientific(1234.9876, u'#.##E0', locale='en_US', decimal_quantization=False)
u'1.2349876E3'
パラメータ
  • number -- フォーマットすべき数字

  • format --

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

  • decimal_quantization -- 高精度な数字を切断し、フォーマットモードに丸め込む。黙認する. True それがそうです。

デジタル解析

babel.numbers.parse_number(string, locale='en_US')

局所化デジタル文字列を整数に解析する.

>>> parse_number('1,099', locale='en_US')
1099
>>> parse_number('1.099', locale='de_DE')
1099

与えられた文字列が解析できない場合、異常を引き起こす:

>>> parse_number('1.099,98', locale='de')
Traceback (most recent call last):
    ...
NumberFormatError: '1.099,98' is not a valid number
パラメータ
  • string -- 解析する文字列

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

戻り値

解析的数字

例外

NumberFormatError -- 文字列が数字に変換できない場合

babel.numbers.parse_decimal(string, locale='en_US', strict=False)

局所化した10進数文字列を小数に解析した.

>>> parse_decimal('1,099.98', locale='en_US')
Decimal('1099.98')
>>> parse_decimal('1.099,98', locale='de')
Decimal('1099.98')
>>> parse_decimal('12 345,123', locale='ru')
Decimal('12345.123')

与えられた文字列が解析できない場合、異常を引き起こす:

>>> parse_decimal('2,109,998', locale='de')
Traceback (most recent call last):
    ...
NumberFormatError: '2,109,998' is not a valid decimal number

もし strict とする. True そして、与えられた文字列が不規則にフォーマットされた数字を含むと、異常を引き起こす。

>>> parse_decimal('30.00', locale='de', strict=True)
Traceback (most recent call last):
    ...
NumberFormatError: '30.00' is not a properly formatted decimal number. Did you mean '3.000'? Or maybe '30,00'?
>>> parse_decimal('0.00', locale='de', strict=True)
Traceback (most recent call last):
    ...
NumberFormatError: '0.00' is not a properly formatted decimal number. Did you mean '0'?
パラメータ
  • string -- 解析する文字列

  • locale -- ♪the Locale オブジェクトまたはエリア設定識別子

  • strict -- 制御は奇妙な方法でフォーマットされた数字を受け入れるか拒否するか

例外

NumberFormatError -- 文字列が10進数に変換できない場合

例外

exception babel.numbers.NumberFormatError(message, suggestions=None)

文字列が数字に解析できない場合に起こる異常.

suggestions

無効入力から派生するフォーマットの正しい数字リスト

データアクセス

babel.numbers.get_currency_name(currency, count=None, locale='en_US')

指定された通貨の領域を返して使用する名前を設定します。

>>> get_currency_name('USD', locale='en_US')
u'US Dollar'

バージョン 0.9.4 で追加.

パラメータ
  • currency -- 貨幣コード。

  • count -- オプションカウント。提供される場合、通貨名は、その数字(可能であれば)に複数化される。

  • locale -- ♪the Locale オブジェクトまたは領域に識別子を設定します。

babel.numbers.get_currency_symbol(currency, locale='en_US')

指定された通貨の領域設定に使用するシンボルを返します。

>>> get_currency_symbol('USD', locale='en_US')
u'$'
パラメータ
  • currency -- 貨幣コード。

  • locale -- ♪the Locale オブジェクトまたは領域に識別子を設定します。

babel.numbers.get_currency_unit_pattern(currency, count=None, locale='en_US')

所定の領域設定貨幣値を長時間表示するための単位モードに戻る。これは以下のものを含む文字列である {{0}} 数字の部分は置き換えられなければなりません {{1}} その中で、通貨長を置き換えて名前を表示しなければなりません

>>> get_currency_unit_pattern('USD', locale='en_US', count=10)
u'{0} {1}'

バージョン 2.7.0 で追加.

パラメータ
  • currency -- 貨幣コード。

  • count -- オプションカウント。提供されれば、その番号の単位モードに戻る。

  • locale -- ♪the Locale オブジェクトまたは領域に識別子を設定します。

babel.numbers.get_decimal_symbol(locale='en_US')

戻り領域は、小数を区切るためのシンボルを設定する。

>>> get_decimal_symbol('en_US')
u'.'
パラメータ

locale -- ♪the Locale オブジェクトまたはエリア設定識別子

babel.numbers.get_plus_sign_symbol(locale='en_US')

現在の領域に戻り、使用するプラス記号を設定します。

>>> get_plus_sign_symbol('en_US')
u'+'
パラメータ

locale -- ♪the Locale オブジェクトまたはエリア設定識別子

babel.numbers.get_minus_sign_symbol(locale='en_US')

現在の領域に戻り、使用するプラス記号を設定します。

>>> get_minus_sign_symbol('en_US')
u'-'
パラメータ

locale -- ♪the Locale オブジェクトまたはエリア設定識別子

babel.numbers.get_territory_currencies(territory, start_date=None, end_date=None, tender=True, non_tender=False, include_details=False)

所与の地域が所与の日の範囲内で有効な通貨リストを返します。このほか,通貨データベースは入札通貨と非入札通貨を区別する.デフォルトの場合は,入札通貨のみを返す.

返り値はすべての通貨のリストであり,通貨起動時間ごとに大まかにソートされる.通貨使用時間が長いほど、リストの位置が左になる。

開始日は今日だと黙認していた。終了日が指定されていない場合、それは開始日と同じになるだろう。そうでなければ,1つの範囲を定義することができる.例えば、これは1995年から2011年までのオーストリアで使用された通貨を探すために使用することができる。

>>> from datetime import date
>>> get_territory_currencies('AT', date(1995, 1, 1), date(2011, 1, 1))
['ATS', 'EUR']

同じように、1つの日に使用されているすべての通貨を見つけることもできます:

>>> get_territory_currencies('AT', date(1995, 1, 1))
['ATS']
>>> get_territory_currencies('AT', date(2011, 1, 1))
['EUR']

デフォルトの場合,返り値は入札通貨のみを含む.しかしこれは変更できます

>>> get_territory_currencies('US')
['USD']
>>> get_territory_currencies('US', tender=False, non_tender=True,
...                          start_date=date(2014, 1, 1))
['USN', 'USS']

バージョン 2.0 で追加.

パラメータ
  • territory -- 通貨の地域の名前を調べなければなりません。

  • start_date -- 開始日。もし与えられていなければ、今日だと仮定する。

  • end_date -- 終了日。与えられていなければ,開始日を仮定する.

  • tender -- 入札通貨が含まれなければならないかどうかを制御する。

  • non_tender -- 統制が非入札通貨を含まなければならないかどうか。

  • include_details -- if set to True, instead of returning currency codes the return value will be dictionaries with detail information. In that case each dictionary will have the keys 'currency', 'from', 'to', and 'tender'.