2012-01-08 37 views
1

如何在Python的輸出中插入一個標籤到文件中?如何在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

。在你的輸出標籤(一切被對準以第8欄)。 – Howard 2012-01-08 18:30:28

+0

無關的註釋:(1)添加所有這些選項卡的Python方法是''\ t'.join([c.lstrip(),d.rstrip(...),...])''。 (2)'d.rstrip('\ n')'可能被簡化(並且功能更加強大)爲'd.rstrip()',它也會去除空格。 – EOL 2012-01-08 19:50:16

回答

2

是的。但這不是標籤的工作方式。他們將光標移動到八倍數的下一列。如果你想完美的表格對齊,那麼你應該使用字符串插值或格式與已知的大小。

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

沒有downvote,但標籤並不總是「將光標移動到下一列的8的倍數」(你可以例如要求'less'尋呼機將標籤放在任何倍數);這句話應該是合格的,至少。 – EOL 2012-01-08 19:43:18

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  
+0

+1:非常好的解決方案。事實上,表格並不是解決原始問題的方法。 – EOL 2012-01-08 19:45:39

相關問題