python 我怎样才能让巴别塔使用减号?

uqjltbpv  于 2023-01-12  发布在  Python
关注(0)|答案(1)|浏览(194)

为什么Babel在format_decimal()这样的函数中不使用我的语言环境中使用的减号呢?在我看来,这正是Babel这样的库的工作。
有没有一种方法可以强制使用特定于区域设置的减号?

>>> import babel
>>> babel.__version__
'2.11.0'

>>> from babel.numbers import format_decimal, Locale
>>> l = Locale("sv_SE")
>>> l.number_symbols["minusSign"]
'−'
>>> format_decimal(-1.234, locale=l)
'-1,234'

尽管Local.number_symbols明显包含不同的字符(在本例中为U+2212),但format_decimal()(和其他Babel格式函数)只使用后备连字符-减号。
我得到的是'-1,234'(带有连字符-减号),而我期望得到的是'−1,234'(带有U+2212减号)。

ulmd4ohb

ulmd4ohb1#

Babel默认使用连字符-减号('-'),尽管在Locale对象的number_symbols属性中可以指定不同的字符。
这是因为format_decimal()函数依赖于Python标准库的locale模块来格式化数字,locale模块使用C库的本地化函数,而C库的本地化函数并不总是能够处理Unicode字符,比如U+2212减号(本地化使用的减号)。
但你可以试试这个:

from babel.numbers import format_decimal, Locale

l = Locale("sv_SE")

number = -1.234
minus_sign = l.number_symbols["minusSign"]
formatted_number = "{}{:,.5f}".format(minus_sign, abs(number))

相关问题