Python实现数字千分位格式化的多种方法

键盘旁的猫
键盘旁的猫
发布时间:2026-10-15 | 5人浏览过
原创

本文详细讲解了在Python中对数字进行千分位格式化的几种常用方法。包括利用format函数的简洁写法、通过正则表达式re.sub进行替换的两种不同正则模式,以及针对Python 2.7版本之前的兼容处理方案。此外,还提供了一个基于循环替换的自定义函数实现,帮助开发者根据具体需求选择合适的格式化策略。

在数据处理和展示中,对数字进行千分位格式化是常见需求,能够显著提升数据的可读性。

第一种方法利用Python内置的字符串格式化功能。

>>> "{:,}".format(56381779049)
'56,381,779,049'
>>> "{:,}".format(56381779049.1)
'56,381,779,049.1'
>>>

第二种方法通过导入re模块,使用正则表达式进行匹配和替换。

>>> import re
>>> subject = '1234567'
>>> result = re.sub(r"(?<=\d)(?=(?:\d\d\d)+$)", ",", subject)
>>> result
'1,234,567'

第三种方法同样基于正则表达式,但采用了不同的匹配模式来实现千分位分隔。

>>> import re
>>> subject = '1234567'
>>> result = re.sub(r"(\d)(?=(\d\d\d)+(?!\d))", r"\1,", subject)
>>> result
'1,234,567'

从Python 2.7版本开始,可以直接使用format函数来设置千分位分隔符,这是较为推荐的做法。

对于Python 2.7及以上版本,可以直接调用format函数并指定分隔符参数。

Python 2.7 (r27:82500, Nov 23 2010, 18:07:12)
[GCC 4.1.2 20070115 (prerelease) (SUSE Linux)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> format(1234567890,',')
'1,234,567,890'
>>> 

另一种实现方式是使用正则表达式进行全局替换。

import re
def strConv(s):  
    s =  str(s)
    while True:
        (s,count) = re.subn(r"(\d)(\d{3})((:?,\d\d\d)*)$",r"\1,\2\3",s)
        if count == 0 : break
    return s
print strConv(12345)

以上介绍了Python中实现数字千分位格式化的几种主要方式,这些方法各有特点,开发者可根据实际场景选择使用。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表