我有一个包含一些书籍名称及其作者的列表,但是我希望它看起来很有条理,所以我希望它能够获取书名,然后用空格填充它,最终得到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中尝试它时它工作得很好,但是当它从列表中获取标题时,它不起作用,为什么会这样?
答案 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)
并完成它。