0

我有一个包含一些书名及其作者的列表,但我希望它看起来井井有条,所以我希望它采用书名,然后用空格完成它,这样它就以 100 个字符结束,与书的长度无关标题。然后,它将添加书名。
到目前为止,我已经尝试过:

for i in range(0, len(bookList)):
    t = 100 - len(bookList[i])
    numbofspaces = ""
    for j in range(0, t):
        numbofspaces += " "

    s.append(bookList[i] + numbofspaces + authorList[i])

当我在 python shell 中尝试它时,它工作得很好,但是当它从列表中获取标题时,它不起作用,这是为什么呢?

4

4 回答 4

7

使用字符串方法:str.rjust(100)

>>> x = [ 'charles dickens','shakespeare','j k rowling']
>>> for name in x:
...     print(name.rjust(50))
... 
                                   charles dickens
                                       shakespeare
                                       j k rowling
于 2013-05-07T18:10:57.570 回答
7

虽然str.ljust()/str.rjust()是好的,简单的解决方案,如果这就是你想要做的,值得注意的是,如果你正在做其他格式,你可以把它作为字符串格式的一部分:

>>> '{:<30}'.format('left aligned')
'left aligned                  '
>>> '{:>30}'.format('right aligned')
'                 right aligned'

文档

于 2013-05-07T18:15:31.953 回答
0

除了无法解释的故障之外,您还有一些不需要它的非常复杂的代码:

range(0, i)可以写成range(i)

您可以更好地编写 for 循环:

for i, book in enumerate(bookList):
    t = 100 - len(book)
    numbofspaces = ""
    for j in range(t):
        numbofspaces += " "

    s.append(book + spaces + authorList[i])

您可以乘以一个字符串:'a' * 10 == 'aaaaaaaaaa'

而且,就像@DhruvPathak 所说,您可以使用''.r/ljust().

于 2013-05-07T18:15:14.473 回答
0

虽然这可能不是您问题的真正答案,但您可以使用

booklist[i].ljust(100)

并完成它。

于 2013-05-07T18:15:34.407 回答