2011-02-25 185 views
9

在Python中打印表格數據的最佳方式是什麼?假設數據在2D列表中,我想創建一個看起來很漂亮的表格。我實際上擁有的是一個字典列表,我希望根據字典中的值打印交叉點。類似於在Python中打印表格數據

for val1 in my_dict: 
    for val2 in my_dict: 
    if val1['a'] > val2['a']: 
     print 'x' 

但以這樣的方式,每列是固定的寬度。編寫器和格式器類似乎是可能性領域的東西,但與Perl的格式化器相比,仍然看起來複雜。

是否有任何現有的實現或我必須寫我自己的?

+0

我想你可能想嘗試pprint(是的,兩個'p's)。我不使用它,但我見過其他人在類似的情況下使用它,因此它在這裏敲響了一聲鍾 – inspectorG4dget

+0

我已經看過pprint,但我看不到如何以我需要的方式使用它。 – Makis

+0

可能的重複有更多的投票和答案:http://stackoverflow.com/questions/9535954/python-printing-lists-as-tabular-data。總是給出明確的期望輸出示例=) –

回答

9

您是否知道PyPi

DataGridPrettyTable看起來像是我通過簡短搜索找到的兩個很好的選擇。在將數據發送到所提供的例程之前,您可能必須以所需的格式組裝數據(當條件爲真時使用「x」)。

13
print "%20s" % somevar 

將打印'somevar'值並使用多達20個空格。添加一個逗號的print語句後面,以避免斷行 - 當然:在「%」經營者讀取string formatting operations docs

6

這裏是寫平方和立方表兩種方式:

for x in range(1, 11): 
    print repr(x).rjust(2), repr(x*x).rjust(3),print repr(x*x*x).rjust(4) 

for x in range(1,11): 
    print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x) 

查看this瞭解詳情。

0

Tabulate是另一個尚未被提及來處理這類任務的軟件包。一個很好的功能是它可以很好地與Pandas數據幀配合使用。