如何使用整数变量指定填充位数编写Python f-string?
如何用f-string通过整数变量指定填充位数
嘿,刚好知道这个实用技巧!f-string本身就支持直接在格式说明里嵌入变量,完全能替代你用.format()的写法,而且代码会更简洁直观。
基础用法:用变量控制填充宽度
你只需要在f-string的格式部分,用大括号把宽度变量包起来就行。比如你之前的.format()写法:
s = 8 "{{:{}}}".format(s).format("test") # 输出 ' test'(前面4个空格,总长度8)
换成f-string的话,直接写成:
s = 8 f"{'test':{s}s}" # 同样输出 ' test'
这里的{s}就是把变量s的值作为填充宽度,后面的s表示按字符串格式对齐(其实默认就是字符串格式,这个s可以省略,但加上会让代码意图更清晰)。
结合你的姓名列表场景
回到你需要按最长姓名长度对齐的需求,只需要把格式说明里的宽度换成计算好的最长长度变量就行。完整示例代码如下:
names = ["Alice", "Bob", "Christopher", "Diana"] ages = {"Alice": 28, "Bob": 32, "Christopher": 40, "Diana": 35} # 计算最长姓名的长度 max_name_length = max(map(len, names)) # 循环打印,用最长长度作为填充宽度实现对齐 for name in names: print(f"The age of {name:{max_name_length}s} is {ages[name]}.")
运行这段代码,输出会自动对齐得整整齐齐:
The age of Alice is 28. The age of Bob is 32. The age of Christopher is 40. The age of Diana is 35.
为什么你之前的写法没生效?
你尝试的f"{'test':s}"只是指定了格式为字符串,但没有设置宽度参数,所以自然不会有填充对齐的效果。核心就是要在格式说明里加入{变量名},来动态指定填充宽度。
内容的提问来源于stack exchange,提问作者johk95
相关产品推荐
相关产品推荐

