2013-05-30 101 views
3

我很困惑如何解決這個格式問題。我懷疑這是因爲有兩個變量存在,而不是一個反過來拋出所有的變量。字符串格式對齊

這是目前我的輸出..

Bin Range Count 
0-9   1 
20-29   1 

而且我想實現..

Bin range Count 
0-9   1 
20-29   1 

我給這部分代碼..

counter = collections.Counter() 
for py_filename in glob.glob('*.py'): 
    with open(py_filename) as f: 
     linecount = sum(1 for line in f) 
     counter[linecount//10] += 1 

print('\n{0} {1}'.format('Bin Range', 'Count')) 

for i,n in sorted(counter.items()): 
    print('{}-{:<12}{:<4}'.format(i * 10, (i + 1) * 10 - 1, n)) 

我假設如果0-9部分都是一個變量,那麼這不會是一個問題,但有沒有辦法格式化規則下的兩個變量還是我只需要弄清楚處理結果的更有效的方法。

歡呼聲!

回答

2

你爲什麼不只是使用一個子格式,如:

for i,n in sorted(counter.items()): 
    binrange='{}-{}'.format(i*10, (i + 1) * 10 - 1) 
    print('{:<12}{:<4}'.format(binrange, n)) 
+0

完美!到底是什麼,現在我會知道未來的場合。 – Ergo

1

您可以width變量取決於第一個項目的字符串長度:

In [1]: items = [[0, 9, 1], [20, 29, 1]] 

In [2]: for x, y, z in items: 
    ...:  print '{}-{:<{width}}{}'.format(x, y, z, width=10-len(str(x))) 
    ...:  
0-9  1 
20-29  1