如何在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
相关产品推荐
相关产品推荐

