首页 > 解决方案 > 如何在同一格式规范中一个接一个地添加一个字符/字符串

问题描述

老实说,我正在尝试做一些非常简单的事情,即从字符串列表中获取格式化的字符串,以便将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 个项目,并且只是在索引不起作用后填充一个句点。

标签: python

解决方案


您使用的语法很好,但有些人可能会觉得难以阅读。一种可能使其更清晰的方法是将字符串格式分离到它自己的函数中,如下所示:

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

推荐阅读