如何用textwrap缩进第二行?

2024-10-01 11:38:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码导入textwrap。但是,我需要在前面有一个数字的所有行前面加一个空格

line1 = [" S  M  T  W Th  F  S"]
line2 = ["--------------------"]
line3 = [" 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31"]

print(''.join(line1))
print(''.join(line2))
line3Str = ''.join(line3)
wrapper = textwrap.TextWrapper(width=20) 
word_list = wrapper.wrap(text=line3Str) 
for element in word_list: 
  print(element)

我试着在7和8之间加上不同的空格,或者在第二行写一个不同的列表,但是不管遇到什么问题

预期输出:(连字符为空格)

-1 ...        
-8 ...     
15 ...       
22 ...     
29 ...

实际输出:

-1 ...       
8 ...   <         
15 ...         
22 ...        
29 ...

Tags: 代码数字elementwrapperlistword空格print
2条回答

如果要将字符串右对齐打印,可以使用:

>>> '18'.rjust(2)
'18'
>>> '8'.rjust(2)
' 8'

您希望右对齐除最后一行之外的每一行,以便可以将程序中的最后两行替换为:

for element in word_list[:-1]: 
    print(element.rjust(20))
print(word_list[-1])

或者,如果要存储格式化的字符串列表,可以在调用wrapper.wrap后格式化word\u list:

word_list = wrapper.wrap(text=line3Str)
word_list = [x.rjust(20) for x in word_list[:-1]] + [word_list[-1]]    

相关问题 更多 >