如何填充带有空格的字符串,以便最终得到特定数量的字符?蟒蛇

时间:2013-05-07 18:08:07

标签: python string

我有一个包含一些书籍名称及其作者的列表,但是我希望它看起来很有条理,所以我希望它能够获取书名,然后用空格填充它,最终得到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 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

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

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

来自the docs

答案 2 :(得分: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()

答案 3 :(得分:0)

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

booklist[i].ljust(100)

并完成它。