python - 指定 f 字符串中连接变量的宽度
问题描述
我正在使用 loguru 包来登录我的 python 项目。
https://github.com/Delgan/loguru
我正在寻找覆盖默认格式,以便我可以为模块/函数/行号字符串指定一个固定的。
这是默认格式...
'<green>{time:YYYY-MM-DD HH:mm:ss.SSS}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>'
输出是这样的......
2020-12-28 14:36:27.510 | INFO | package1.module1:function:132 - Listing Users...
2020-12-28 14:36:27.601 | ERROR | package10.module10:function10:1000 - The provided token has expired
我想为包/模块/函数添加一个静态宽度/填充,所以输出看起来像......
2020-12-28 14:36:27.510 | INFO | package1.module1:function:132 - Listing Users...
2020-12-28 14:36:27.601 | ERROR | package10.module10:function10:1000 - The provided token has expired
问题是函数行号的完整路径是由 3 个变量构成的......
<cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan>
有什么方法可以指定字符串组合的宽度吗?就像是 ...
<cyan>{name + ":" + function + ":" + line : 45}</cyan>
感谢帮助!
解决方案
你总是可以限制字符串长度,就像你对 any 做的那样sequence
:
# 150 chars string:
x = "abc" * 50
# 30 chars string:
y = "xyz" * 10
# predefined display limit:
n = 45
spaces = " " * n
print(f"{(x+spaces)[:n]} end line")
print(f"{(y+spaces)[:n]} end line")
print(f"{(y+x+spaces)[:n]} end line")
输出:
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabc end line
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyz end line
xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzabcabcabcabcabc end line
推荐阅读
- docusignapi - 新错误来自 Docusign APi,有什么改变吗?
- c# - 使用 selenium webdriver 检查引导切换按钮状态
- react-native - 我的地图在停止滚动时不起作用,代码错误
- python - 用于流式传输 TCP/IP 数据并将其保存为 .txt 文件的 Python 脚本
- objective-c - 在 Objective-C 中使用完成处理程序调用 Swift 函数
- excel - 如何使用 vba 从 Word 文档中提取电子邮件地址
- r - 在 R 中,如何根据可变的开始/停止位置将数据集拆分为列?
- flutter - 在颤动中将数据发送到新屏幕
- android - 获取Android NDK版本的正确方法是什么
- woocommerce - 如何使 Woocommerce REST API 接受 per_page 和 page 参数以获取给定时间段内的 top_sellers