如何将选项卡插入Python的文件输出?

时间:2012-01-08 18:26:34

标签: python windows

如何在Python的文件输出中插入标签?

例如,

  print >>outPutFile , c.lstrip()+"\t"+d.rstrip('\n')+"\t"+a+"\t"+b

输出:

  cfn79e739_1.lp  260175  79      739

  cfn100e1217_1.lp        288734  100     1217

第二行在288734之后没有标签。为什么?

第一行在cfn79e739_1.lp和260175之后没有标签。为什么?

我需要使每个列处于相同的对齐位置。

2 个答案:

答案 0 :(得分:3)

计算每列的最大宽度,然后相应地填充每个值:

lines = [
    ['cfn79e739_1.lp', '260175', '79', '739'],
    ['cfn100e1217_1.lp', '285768', '100', '1217'],
    ['cfn200e11660_1.lp', '288734', '200', '11660'],
    ['cfn1500e145_1.lp', '218435', '1500', '145'],
    ]

def print_columns(lines, spacing=2):
    widths = [max(len(value) for value in column) + spacing
              for column in zip(*lines)]
    for line in lines:
        print(''.join('%-*s' % item for item in zip(widths, line)))

print_columns(lines)

输出:

cfn79e739_1.lp     260175  79    739    
cfn100e1217_1.lp   285768  100   1217   
cfn200e11660_1.lp  288734  200   11660  
cfn1500e145_1.lp   218435  1500  145    

答案 1 :(得分:2)

是的。但这不是标签的工作方式。他们将光标移动到下一列,即8的倍数。如果您想要完全表格对齐,那么您应该使用字符串插值或使用已知大小的格式。

>>> print '%-20s %-4d' % ('foo', 42)
foo                  42  
>>> print '%-20s %-4d' % ('bar', 13)
bar                  13