python - 如何在同一格式规范中一个接一个地添加一个字符/字符串
问题描述
老实说,我正在尝试做一些非常简单的事情,即从字符串列表中获取格式化的字符串,以便将index+1
其左对齐到特定的长度,但在索引之后有一个句点,然后是字符串。
基本上从一个列表['foo', 'bar', 'baz', 'quz']
中将它变成一个人类友好的表示,如下所示:
1. foo
2. bar
3. baz
4. quz
现在我做了以下事情:
names = ['foo', 'bar', 'baz', 'quz']
"\n".join(f"{f'{i}.':<5}{n}" for i, n in enumerate(names, 1)
虽然这确实有效,但我想知道是否有比嵌套内部 f 字符串更好的方法,因为我正在使用的项目列表大于 10 个项目,并且只是在索引不起作用后填充一个句点。
解决方案
您使用的语法很好,但有些人可能会觉得难以阅读。一种可能使其更清晰的方法是将字符串格式分离到它自己的函数中,如下所示:
def format_name(index, name):
return "{index:<5}{name}".format(index=f"{index}.", name=name)
这可以缩短为单行,我认为读起来很好:
>>> format_name = lambda i, name: "{0:<5}{1}".format(f"{i}.", name)
>>> "\n".join(format_name(i, n) for i, n in enumerate(names, 1))
1. foo
2. bar
3. baz
4. quz
推荐阅读
- python - 对 Python 很陌生,如何为这个测试编写代码?
- azure - Azure CLI 查询 JMESPATH 多个表达式
- python - 如何使用 Faust Python 包将 kafka 主题与 Web 端点连接起来?
- vba - 如何在 vba 的类中的 Let 函数上设置 2 个参数(对于 excel)?
- node.js - Firebase 云功能服务器错误。getaddrinfo ENOTFOUND storage.googleapis.com
- javascript - 添加日志以存储有关用户操作 JavaScript 的信息
- javascript - 如何在图中找到元素?
- c++ - 错误 C2678:未找到采用“const_Ty”类型的左操作数的运算符(或没有可接受的转换)
- linux - 安装 .run 文件期间的浮点异常(核心转储)
- azure - ASP.Net Core 3.1 在 Azure 应用服务上加载 Azure Key Vault 时出错