<p>您可以预先计算最长的URL,并用点对齐该条目,以便它更完美地配对:</p>
<pre><code>>>> signs = ['-', '+', '-']
... URLs = ['http://foobar.com', 'http://much_longer_foo.com', 'http://medium_foo.com']
... tails = ['Longer shouting ending!!', 'different ending', 'Longer shouting ending!!']
...
... maxlen = max(map(len, URLs))
... linefmt = " [{{sign}}] {{URL:.<{maxlen}}}{{tail:.>30}}".format(maxlen=maxlen)
... for sign,URL,tail in zip(signs, URLs, tails):
... print(linefmt.format(sign=sign, URL=URL, tail=tail))
...
[-] http://foobar.com...............Longer shouting ending!!
[+] http://much_longer_foo.com..............different ending
[-] http://medium_foo.com...........Longer shouting ending!!
</code></pre>
<p>如您所见,我改为使用<code>.format</code>而不是百分比格式。这主要是一个偏好的问题。你知道吗</p>
<p>重要的是,我们首先用最长URL的长度构建格式字符串,然后使用生成的格式字符串。结果与预期略有不同:圆点周围没有空格。如果您坚持要添加它们,可以手动添加它们。你知道吗</p>
<p>请注意,在Python3.6及更高版本中,可以使用<a href="https://www.python.org/dev/peps/pep-0498/" rel="nofollow noreferrer">f-strings</a>更优雅地执行此操作:</p>
<pre><code>>>> signs = ['-', '+', '-']
... URLs = ['http://foobar.com', 'http://much_longer_foo.com', 'http://medium_foo.com']
... tails = ['Longer shouting ending!!', 'different ending', 'Longer shouting ending!!']
...
... maxlen = max(map(len, URLs))
... for sign,URL,tail in zip(signs, URLs, tails):
... print(f' [{sign}] {URL:.<{maxlen}}{tail:.>30}')
...
[-] http://foobar.com...............Longer shouting ending!!
[+] http://much_longer_foo.com..............different ending
[-] http://medium_foo.com...........Longer shouting ending!!
</code></pre>
<p>另外,如您所见,我建议使用一个格式字符串,并分别传递sign/URL/ending。这将帮助您减少代码重复并简化可维护性。你知道吗</p>