Python中货币字符串的格式化:添加货币符号、千分位分隔符

云课堂学Python 2025-02-17 22:14:54

在 Python 中处理财务数据时,将浮点数正确格式化为货币格式是一项常见的操作,本文探讨了货币字符串的格式化的各种方法,以满足不同的需求。

以标准化和易读的格式显示货币数值,通常包括货币符号、千分位分隔符。例如,货币数值“1234567.89”,在中国应格式化为“¥1,234,567.89”,在美国应格式化为“$1,234,567.89”。

方法1: 使用 locale 模块

Python 提供了一种根据用户所在区域设置货币数值格式的方法。使用 locale 模块,会自动格式化货币数值,添加货币符号和千位分隔符。

import localelocale.setlocale(locale.LC_ALL, '')value = 1234567.89formatted_value = locale.currency(value, grouping=True)print(formatted_value)# 输出:¥1,234,567.89

默认情况下,setlocale 函数自动自动适应用户所在区域设置货币符号。如果使用其他地区货币符号,请在 setlocale 函数中添加区域参数。currency 函数中的参数 grouping=True功能是添加千分位分隔符。 ``

import localelocale.setlocale(locale.LC_ALL, 'en_US.UTF-8')value = 1234567.89formatted_value = locale.currency(value, grouping=True)print(formatted_value)# 输出:$1,234,567.89方法2:使用 babel 模块

使用 babel 模块也可以根据不同的区域来设置货币数字格式。使用 babel 模块前需要 pip 安装。

from babel.numbers import format_currencyvalue = 1234567.89formatted_value = format_currency(value, 'USD', locale='en_US')print(formatted_value) 方法3:使用 format() 格式化

Python 中的 format() 方法允许使用占位符格式化字符串。

value = 1234567.89formatted_value = "¥{:,.2f}".format(value)print(formatted_value)方法4:使用 f-strings 格式化

Python 3.6 引入的 f-strings,提供了一种更简单的字符串格式方法。

value = 1234567.89formatted_value = f"${value:,.2f}"print(formatted_value)格式化字符串中数值

如果需要处理句子中的数值,可以使用正则表达式匹配数值,找到数值并对其进行格式化。

import reimport localepattern = r'\d+(\.\d{1,2})?'locale.setlocale(locale.LC_ALL, '')value = "A total of 1234567.89 was consumed today."formatted_value = re.sub(pattern, lambda x: locale.currency(float(x.group()), grouping=True), value)print(formatted_value)# 输出:A total of ¥1,234,567.89 was consumed today.
1 阅读:16