You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Python中按指定字符数量间隔添加空格?

解决电话号码格式化问题

没问题,我来帮你把+3212345678这类格式的电话号码转换成+32 1 234 56 78的样式!下面分享两种实用的实现方式,你可以根据自己的需求选择:

方法1:正则表达式(简洁高效)

正则表达式非常适合处理这种固定位置的字符串分割需求,一行代码就能搞定:

import re

original_num = "+3212345678"
formatted_num = re.sub(r'^(\+..)(.)(...)(..)(..)$', r'\1 \2 \3 \4 \5', original_num)
print(formatted_num)  # 输出: +32 1 234 56 78

正则逻辑说明:

  • ^(\+..):匹配开头的+和后面两位数字,作为第一个捕获组
  • (.):捕获接下来的1位数字(第二个组)
  • (...):捕获接下来的3位数字(第三个组)
  • (..):捕获接下来的2位数字(第四个组)
  • (..)$:捕获最后2位数字(第五个组),$确保匹配到字符串结尾
  • 替换时用\1 \2 \3 \4 \5把各个捕获组用空格拼接起来

方法2:手动字符串切片(直观易懂)

如果你不想用正则,手动按位置切片拼接也很清晰,适合新手理解:

original_num = "+3212345678"

# 按固定位置拆分字符串
prefix = original_num[:3]       # "+32"
part1 = original_num[3:4]       # "1"
part2 = original_num[4:7]       # "234"
part3 = original_num[7:9]       # "56"
part4 = original_num[9:]        # "78"

# 拼接成目标格式
formatted_num = f"{prefix} {part1} {part2} {part3} {part4}"
print(formatted_num)  # 输出: +32 1 234 56 78

批量处理优化

如果需要处理大量号码,可以把逻辑封装成函数,再加上输入格式验证避免出错:

import re

def format_belgian_phone(phone_num):
    # 先验证输入是否符合+开头的10位数字格式
    if not re.match(r'^\+\d{10}$', phone_num):
        raise ValueError("请输入符合格式的号码,比如:+3212345678")
    return re.sub(r'^(\+..)(.)(...)(..)(..)$', r'\1 \2 \3 \4 \5', phone_num)

# 批量处理示例
phone_list = ["+3212345678", "+3298765432", "+3211223344"]
formatted_list = [format_belgian_phone(num) for num in phone_list]
print(formatted_list)
# 输出: ['+32 1 234 56 78', '+32 9 876 54 32', '+32 1 122 33 44']

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

火山引擎 最新活动