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

如何在Python中格式化固定宽度文本并实现电话号码对齐?

解决Python中电话号码自动对齐的格式化问题

这个问题我之前也碰到过,手动补空格不仅麻烦还容易出错,其实用Python的字符串格式化功能就能轻松实现自动对齐,完全不用手动调整空格。下面给你两种实用的方案:

方案一:固定宽度对齐(适合已知姓名长度范围的场景)

如果你能确定姓名加上's Cell:后的最大长度,直接给标签部分设置固定宽度并左对齐,后面的电话号码就会自动对齐到同一列:

name1 = "Nadya"
name2 = "Jim"
phone_number1 = "(415) 123-4567"
phone_number2 = "(617) 123-4567"

# 给标签部分设置固定宽度15,左对齐(<表示左对齐,不足的用空格填充)
formatted_string = "{:<15} {}\n{:<15} {}".format(
    f"{name1}'s Cell:", phone_number1,
    f"{name2}'s Cell:", phone_number2
)

print(formatted_string)

输出结果:

Nadya's Cell:   (415) 123-4567
Jim's Cell:     (617) 123-4567

用更简洁的f-string写法也可以:

formatted_string = f"{f'{name1}'s Cell:':<15} {phone_number1}\n{f'{name2}'s Cell:':<15} {phone_number2}"

方案二:动态计算宽度(适合不确定姓名长度的场景)

如果姓名长度不固定(比如有更长的姓名),可以先动态计算所有标签的最大宽度,再统一格式化,这样不管姓名多长都能完美对齐:

# 示例数据可以扩展更多姓名和电话
names = ["Nadya", "Jim", "Alexander"]
phone_numbers = ["(415) 123-4567", "(617) 123-4567", "(212) 987-6543"]

# 计算所有标签(姓名+'s Cell:)的最大长度
max_label_width = max(len(f"{name}'s Cell:") for name in names)

# 生成每一行的格式化字符串
lines = [f"{f'{name}'s Cell:':<{max_label_width}} {phone}" for name, phone in zip(names, phone_numbers)]

# 拼接成最终字符串
formatted_string = "\n".join(lines)

print(formatted_string)

输出结果:

Nadya's Cell:     (415) 123-4567
Jim's Cell:       (617) 123-4567
Alexander's Cell: (212) 987-6543

关键知识点解释

  • <{width}:表示左对齐,占用指定宽度的字符空间,不足的部分用空格填充,这样后面的内容就会从同一列开始。
  • 动态计算max_label_width:通过生成器表达式遍历所有姓名,计算每个标签的长度,取最大值作为统一宽度,确保所有标签都能适配,不会出现内容溢出或对齐错位的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:46:57