如何添加新行以显示代码中的列数

时间:2018-12-09 23:27:15

标签: python string python-3.x string-formatting

我有如下列表:

l1=['N  N  N  N  M  M  M  W  W  N  W  W','N  W  W  W  N  N  N  N  N  N  N  N']
l2=['A','B','C','D','E','F']

这是我的代码:

for i in range(len(l1)):
    print(l2[i],l1[i])

我的输出是:

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N

我想要这样的输出(不使用第三方库):

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N
  0  1  2  3  4  5  6  7  8  9 10 11

我已经尝试过类似的方法,但是没有用:

l3=[j for j in l1[0] if j!=' ']
print("  ",end='')
for k in range(len(l3)):
    print("{}  ".format(k),end='')

输出如下:

A N  N  N  N  M  M  M  W  W  N  W  W
B N  W  W  W  N  N  N  N  N  N  N  N
  0  1  2  3  4  5  6  7  8  9  10  11 

3 个答案:

答案 0 :(得分:2)

我想您希望字符和数字正确对齐。 修改最后的字符串格式

print('{}'.format(..))

进入

print(' { :>n}'.format(..))

在这种情况下,n是2。

答案基于 Python: Format output string, right alignment

答案 1 :(得分:1)

在Python 3.6+中,您可以使用格式化的字符串文字(PEP489):

l1 = ['N  N  N  N  M  M  M  W  W  N  W  W', 'N  W  W  W  N  N  N  N  N  N  N  N']
l2 = ['A','B','C','D','E','F']

for i, j in zip(l2, l1,):
    print(f'{i:>3}', end='')
    j_split = j.split()
    for val in j_split:
        print(f'{val:>3}', end='')
    print('\n', end='')

print(f'{"":>3}', end='')
for idx in range(len(j_split)):
    print(f'{idx:>3}', end='')

结果:

  A  N  N  N  N  M  M  M  W  W  N  W  W
  B  N  W  W  W  N  N  N  N  N  N  N  N
     0  1  2  3  4  5  6  7  8  9 10 11

答案 2 :(得分:0)

我使用字符串格式解决了该问题:

> summary(crimeData$Row.Number)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0  235792  471370 1944429 5601310 6254267 
>

输出为:

l3=[j for j in l1[0] if j!=' ']
for k in range(len(l3)):
    print('%3s'%" {}".format(k),end='')