首页 > 解决方案 > 如何换行?

问题描述

打印列表中的项目时,我在保持某种格式时遇到问题:

[TEXT1, TEXT2, TEXT3, TEXT4, TEXT5, TEXT6, TEXT7, TEXT8, TEXT9]

预期输出:('~' 表示文档中的空白)

~~~~~~~~~~TEXT1, TEXT2, TEXT3, TEXT4, TEXT5,
~~~~~~~~~~TEXT6, TEXT7, TEXT8, TEXT9

我遇到的问题是TEXT2在 之后追加TEXT1,而不重新添加空格('~')。

a = ['A121', 'A221', 'A321', 'A421', 'A521', 'A621', 'A721', 'A821', 'A921']

for v in a:
    counter = 0
    if counter == 5:
        print '\n'
    print "                {},".format(v.ljust(0)),

输出:

                A121                 A221                 A321                 A421                 A521                 A621                 A721                 A821                 A921

预期输出:

                A121, A221, A321, A421, A521,
                A621, A721, A821, A921

标签: pythonpython-2.7formatting

解决方案


有很多方法可以解决这个问题:

一:

a = ['A121', 'A221', 'A321', 'A421', 'A521', 'A621', 'A721', 'A821', 'A921']

INDENT = ' '*10
NUMBER_OF_COLUMNS = 5

lead = INDENT
for item_number, item in enumerate(a):
    print("{lead}{item}".format(lead=lead, item=item), end='')

    if item_number % NUMBER_OF_COLUMNS == NUMBER_OF_COLUMNS - 1:
        lead = ",\n" + INDENT
    else:
        lead = ", "

二:

table = []
row = []

for item in a:
    row.append(item)
    if len(row) == NUMBER_OF_COLUMNS:
        table.append(INDENT + ', '.join(row))
        row = []

table.append(INDENT + ', '.join(row))

print(',\n'.join(table))

三、单线:

print(',\n'.join(INDENT + ', '.join(a[i:i + NUMBER_OR_COLUMNS]) for i in range(0, len(a), NUMBER_OR_COLUMNS)))

或者也许 textwrap.fill() 会起作用:

from textwrap import fill

print(fill(', '.join(a), initial_indent=10*' ', subsequent_indent=10*' ', width=40))

所有输出(在您的示例中使用逗号 a ):

          A121, A221, A321, A421, A521,
          A621, A721, A821, A921

推荐阅读