python - 如何为 f 字符串对齐定义填充字符?
问题描述
我一直在搞乱文本对齐,包括字符串方法和 f 字符串。我目前的目标是创建一个目录样式的输出,看起来像这样:
Introduction....................1
Python Basics...................5
Creating Your First Program....12
Operators and Variables........29
很容易,我已经能够像这样格式化它:
Introduction 1
Python Basics 5
Creating Your First Program 12
Operators and Variables 29
代码是:
for chapt, page in contents:
print(f"{chapt:<30}{page:>5}")
我在网上找不到任何描述如何将填充字符和 f 字符串一起添加的资源。使用.center
, .ljust
,.rjust
字符串方法,我已经能够做到这一点,因为它们采用宽度参数,然后是可选的填充字符。在这篇文章中,我想我找到了解决方案。
该
x<y
部分表示将文本左对齐,宽度为 y 个空格。对于任何未使用的空间,用字符 x 填充它。
我尝试了这种方法,将我的打印语句从 编辑print(f"{chapt:<30}{page:>5}")
为print(f"{chapt:'.'<30}{page:'.'>5}")
。然而这会返回一个错误:
Traceback (most recent call last):
File "main.py", line 40, in <module>
print(f"{chapt:'.'<30}{page:'.'>5}")
ValueError: Invalid format specifier
(第 40 行是我完整代码中的行。)
有没有办法选择填充字符,或者我必须恢复到字符串方法。我相信有,但我不知道如何使用它。谢谢!
解决方案
在对齐字符(>
或<
)之前指定它,不带撇号。
contents = {"Introduction": 1, "Python Basics": 5, "Creating Your First Program": 12, "Operators and Variables": 29}
for chapt, page in contents.items():
print(f"{chapt:.<30}{page:.>5}")
输出:
Introduction......................1
Python Basics.....................5
Creating Your First Program......12
Operators and Variables..........29
从文档
如果指定了有效的对齐值,则可以在其前面加上可以是任何字符的填充字符,如果省略则默认为空格。在格式化字符串文字中或在使用方法时,不能使用文字大括号(“<code>{”或“<code>}”)作为填充字符。但是,可以插入带有嵌套替换字段的花括号。此限制不影响功能
str.format()
format()
推荐阅读
- python - 使用命名元组输出特定数据
- php - 通过计算它们的关系来过滤元素 Laravel5
- php - 这个命令处理程序是可测试的吗?
- python - Python tqdm 进度条块 winsound
- reactjs - 尝试使用 react-select 将我的默认占位符的颜色更改为黑色,但不起作用
- javascript - 将外部和内部 observable 的结果组合成一个参数(数组),用于下一个 map 方法
- sql-server - SQL Server 查找用户帐户的最低权限
- haskell - 使用持久生成的类型定义自定义类型
- javascript - Angular 6 服务注入异常
- android - Firebase - RecyclerView 多次只显示一张图片