正如Saelyth所指出的,使用textwrap来格式化这个,但在此之前,您需要格式化每个数字,并将其右对齐并占用2个空格:import textwrap
text = [str(i) for i in range(1, 100)]
one_line = ', '.join('{:>2}'.format(e) for e in text)
# one_line == ' 1, 2, 3, ...'
print('\n'.join(textwrap.wrap(one_line, width=80)))
输出:
^{pr2}$
更新
如果要两个空格的缩进,第一种方法是用缩进打印每一行:import textwrap
text = [str(i) for i in range(1, 100)]
one_line = ', '.join('{:>2}'.format(e) for e in text)
# one_line == ' 1, 2, 3, ...'
for line in textwrap.wrap(one_line, width=78):
print(' {}'.format(line))
第二种方法是使用textwrap.indent:import textwrap
text = [str(i) for i in range(1, 100)]
one_line = ', '.join('{:>2}'.format(e) for e in text)
# one_line == ' 1, 2, 3, ...'
block = '\n'.join(textwrap.wrap(one_line, width=78))
print(textwrap.indent(block, ' '))
注意,由于有两个空格的缩进,我将宽度从80减小到78。在
更新2
感谢Tomerikoo建议使用textwrap.fill,代码现在更简单了:import textwrap
text = [str(i) for i in range(1, 100)]
one_line = ', '.join('{:>2}'.format(e) for e in text)
# one_line == ' 1, 2, 3, ...'
print(textwrap.fill(one_line,
width=80,
initial_indent=' ',
subsequent_indent=' '))
更新3
在这次更新中,我添加了Tim的建议,以进一步减少步骤。在import textwrap
one_line = ', '.join('{:>2}'.format(e) for e in range(1, 100))
# one_line == ' 1, 2, 3, ...'
print(textwrap.fill(one_line,
width=80,
initial_indent=' ',
subsequent_indent=' '))