如何在相同格式说明中的另一个字符/字符串后添加

时间:2019-07-16 14:48:15

标签: 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个项目,并且在索引不可用后填充了一段时间工作。

2 个答案:

答案 0 :(得分:1)

您使用的语法很好,但是有些语法可能很难阅读。一种可能更清楚的方法是将字符串格式分成其自己的函数,如下所示:

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

答案 1 :(得分:1)

保持简单:

def ndot(n):
    return f'{n}.'

for i in range(8, 12):
    print(f'{ndot(i):<5}XX')

打印

8.   XX
9.   XX
10.  XX
11.  XX

将其应用于您的原始答案,如下所示:

'\n'.join(f'{ndot(i):<5}{nm}' for i, nm in enumerate(names, 1))