如何用f-string或str.format改写Python的.ljust字符串对齐语句?
如何用f-string或str.format()实现文本左对齐并补全短横线至指定宽度?
问题背景
需要输出字符串Current activity,并在右侧补全短横线,使最终总长度达到变量activityCols定义的26字符。原本用str.ljust()实现,现在想改用更现代的f-string或str.format()写法,但尝试的str.format()写法未生效,求可行方案。
原可用代码:
activityCols = 26 print("Current activity".ljust(activityCols, '-'))
输出示例:Current activity------------(总长度26)
可行解决方案
方案1:使用f-string(推荐)
f-string支持Python格式规范迷你语言,可直接在占位符中指定填充字符、对齐方式和目标宽度:
activityCols = 26 # 直接嵌入字符串的写法 print(f"{'Current activity':-<{activityCols}}") # 拆分变量的更易维护写法 activity_text = "Current activity" print(f"{activity_text:-<{activityCols}}")
格式说明::-<{activityCols} 表示用-作为填充字符,<代表左对齐,宽度由变量activityCols指定。
方案2:使用str.format()
若需兼容Python 3.5之前版本,可使用str.format(),注意格式字符串的正确写法:
activityCols = 26 # 关键字参数传递宽度 print("{:-<{width}}".format("Current activity", width=activityCols)) # 位置参数传递宽度 print("{0:-<{1}}".format("Current activity", activityCols))
格式说明:{:-<{width}} 中,:开启格式规范,-是填充字符,<表示左对齐,{width}引用传递的宽度参数。
常见无效写法原因
如果你的str.format()写法未生效,大概率是以下问题之一:
- 未指定填充字符:默认填充空格而非短横线,比如
"{:<26}".format(...)只会补空格 - 格式符顺序错误:比如写成
"{<:-26}"这类不符合格式规范的写法,会直接输出格式字符串本身而非格式化结果
内容的提问来源于stack exchange,提问作者isidore
相关产品推荐
相关产品推荐

