在 Python 中处理财务数据时,将浮点数正确格式化为货币格式是一项常见的操作,本文探讨了货币字符串的格式化的各种方法,以满足不同的需求。
以标准化和易读的格式显示货币数值,通常包括货币符号、千分位分隔符。例如,货币数值“”,在中国应格式化为“¥1,,”,在美国应格式化为“$1,,”。
方法1: 使用 locale 模块
Python 提供了一种根据用户所在区域设置货币数值格式的方法。使用 locale 模块,会自动格式化货币数值,添加货币符号和千位分隔符。
import locale
locale.setlocale(locale.LC_ALL, '')
value =
formatted_value = locale.currency(value, grouping=True)
print(formatted_value)
# 输出:¥1,,
默认情况下,setlocale 函数自动自动适应用户所在区域设置货币符号。如果使用其他地区货币符号,请在 setlocale 函数中添加区域参数。currency 函数中的参数 grouping=True功能是添加千分位分隔符。 ``
import locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
value =
formatted_value = locale.currency(value, grouping=True)
print(formatted_value)
# 输出:$1,,
方法2:使用 babel 模块
使用 babel 模块也可以根据不同的区域来设置货币数字格式。使用 babel 模块前需要 pip 安装。
from babel.numbers import format_currency
value =
formatted_value = format_currency(value, 'USD', locale='en_US')
print(formatted_value)
方法3:使用 format() 格式化
Python 中的 format() 方法允许使用占位符格式化字符串。
value =
formatted_value = "¥{:,.2f}".format(value)
print(formatted_value)
方法4:使用 f-strings 格式化
Python 引入的 f-strings,提供了一种更简单的字符串格式方法。
value =
formatted_value = f"${value:,.2f}"
print(formatted_value)
格式化字符串中数值
如果需要处理句子中的数值,可以使用正则表达式匹配数值,找到数值并对其进行格式化。
import re
import locale
pattern = r'\d+(\.\d{1,2})?'
locale.setlocale(locale.LC_ALL, '')
value = "A total of 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,, was consumed today.