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

如何用Python格式化字符串实现指定的数字分组编号格式?

解决数字编号的格式化问题

你之前的代码之所以输出重复的123,核心问题是你用的{0:1.3}字符串格式化语法,每次都是从整个输入字符串的开头截取前3个字符,而不是按照你需要的分段位置去提取内容,所以才会得到123.123.123-123这样的结果。

这里给你两种简单可行的解决方案:

方法一:直接字符串切片(最直观)

因为你的目标输入是固定长度的数字字符串(比如例子里的11位),可以直接通过字符串切片来分段截取,然后拼接成需要的格式:

num_str = "12345678910"
formatted_id = f"{num_str[:3]}.{num_str[3:6]}.{num_str[6:9]}-{num_str[9:]}"
print(f'number id {formatted_id}')

运行这段代码后,输出就是你想要的:number id 123.456.789-10

方法二:正则表达式替换(更通用)

如果需要处理不同长度的类似编号(或者想让代码更灵活),可以用正则表达式来分组匹配并替换:

import re

num_str = "12345678910"
# 正则分组:前3位、中间3位、再3位、最后2位
formatted_id = re.sub(r'^(\d{3})(\d{3})(\d{3})(\d{2})$', r'\1.\2.\3-\4', num_str)
print(f'number id {formatted_id}')

这个方法会自动把符合3+3+3+2数字结构的字符串转换成你需要的格式。

简单总结下:你之前的格式化方式没有实现分段截取,而是重复取整个字符串的前3位,改用切片或正则分组就能轻松解决问题啦。

内容的提问来源于stack exchange,提问作者Alex Meireles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:09:35