为什么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减号)。
1条答案
按热度按时间ulmd4ohb1#
Babel默认使用连字符-减号('-'),尽管在Locale对象的number_symbols属性中可以指定不同的字符。
这是因为format_decimal()函数依赖于Python标准库的locale模块来格式化数字,locale模块使用C库的本地化函数,而C库的本地化函数并不总是能够处理Unicode字符,比如U+2212减号(本地化使用的减号)。
但你可以试试这个: