You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中格式化9位数字字符串为三位分组格式?

解决9位数字字符串按3位分隔的Python实现

这需求挺常见的,我给你几种简单又靠谱的Python实现方式,都能完美满足你的要求:

方法一:字符串切片(最直观,适合固定9位场景)

因为你的字符串都是恰好9位数字,直接通过字符串切片拆分三段再拼接是最直接高效的方式:

def format_9digit(s):
    # 前3位 + 分隔符 + 中间3位 + 分隔符 + 最后3位
    return f"{s[:3]}-{s[3:6]}-{s[6:]}"

# 测试示例
test_strings = ["024764108", "002231531", "005231329"]
for s in test_strings:
    print(format_9digit(s))

运行后会输出:

024-764-108
002-231-531
005-231-329

方法二:正则表达式(更灵活,支持更长数字串)

如果以后你需要处理更长的数字串(比如12位、15位,同样每3位分隔),正则表达式会更灵活:

import re

def format_digits_regex(s):
    # 匹配每3个数字,且后面还有数字的位置,插入分隔符
    return re.sub(r'(\d{3})(?=\d)', r'\1-', s)

# 测试示例
test_strings = ["024764108", "002231531", "005231329"]
for s in test_strings:
    print(format_digits_regex(s))

这里的正则(\d{3})(?=\d)表示"匹配3个数字,且后面还有至少一个数字",然后把匹配到的3个数字替换成数字-,刚好在第3和第6位后插入分隔符,完美符合需求。

方法三:textwrap模块(通用字符串分割)

Python内置的textwrap模块也能轻松实现这个功能,适合喜欢通用方法的场景:

import textwrap

def format_digits_wrap(s):
    # 按每3个字符分割成列表,再用-连接
    parts = textwrap.wrap(s, 3)
    return '-'.join(parts)

# 测试示例
test_strings = ["024764108", "002231531", "005231329"]
for s in test_strings:
    print(format_digits_wrap(s))

textwrap.wrap会把字符串分割成指定长度的子串列表,再用-连接起来,代码可读性很高。


内容的提问来源于stack exchange,提问作者yuchen huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:07:57