如何在Python中每四位数用逗号格式化一个数字?

Jer*_*hou 5 python string format localization numbers

我有一个号码12345,我想要结果'1,2345'。我尝试了以下代码,但失败了:

>>> n = 12345
>>> f"{n:,}"
'12,345'
Run Code Online (Sandbox Code Playgroud)

ruo*_*ola 7

正则表达式将为您工作:

import re


def format_number(n):
    return re.sub(r"(\d)(?=(\d{4})+(?!\d))", r"\1,", str(n))
Run Code Online (Sandbox Code Playgroud)
>>> format_number(123)
'123'
>>> format_number(12345)
'1,2345'
>>> format_number(12345678)
'1234,5678'
>>> format_number(123456789)
'1,2345,6789'
Run Code Online (Sandbox Code Playgroud)

解释:

匹配:

  • (\d)匹配一个数字...
  • (?=(\d{4})+(?!\d))...后面跟着一组或多组恰好为 4 位的数字。

代替:

  • \1,将匹配的数字替换为自身和,