2017-10-12 67 views
-1

我有一些數據(表數據,尤其是)的這個樣子的,當我打印出來蟒蛇:如何打印出一個「整潔」的方式

PROBABILITY AND STATISTICS B+ 
DISCRETE MATHEMATICS A 
DATABASE MANAGEMENT SYSTEMS C+ 
FORMAL LANGUAGES AND AUTOMATA THEORY A 
INTERNET TECHNOLOGIES A 
MANAGERIAL ECONOMICS AND FINANCIAL ANALYSIS A 
DATABASE MANAGEMENT SYSTEMS LAB A++ 
INTERNET TECHNOLOGIES LAB A++ 
COMPREHENSIVE ONLINE EXAMINATION B 

,但我想是這樣的:

PROBABILITY AND STATISTICS     B+ 
DISCRETE MATHEMATICS      A 
DATABASE MANAGEMENT SYSTEMS     C+ 
FORMAL LANGUAGES AND AUTOMATA THEORY  A 
INTERNET TECHNOLOGIES      A 
MANAGERIAL ECONOMICS AND FINANCIAL ANALYSIS A 
DATABASE MANAGEMENT SYSTEMS LAB    A++ 
INTERNET TECHNOLOGIES LAB     A++ 
COMPREHENSIVE ONLINE EXAMINATION   B 

我如何在Python中實現這一點?

+2

請參閱[這裏](https://stackoverflow.com/questions/9535954/printing-lists-as-tabular-data)或[這裏](https://stackoverflow.com/questions/9989334/create-nice-列輸出在python)或搜索「漂亮打印表」,因爲這是一個相當普遍的話題。 – CoryKramer

+0

看起來你想'ljust'。請參閱[這裏](https://stackoverflow.com/questions/5676646/how-can-i-fill-out-a-python-string-with-spaces) –

+0

[問題要求我們推薦或找到一本書,工具,軟件庫,教程或其他非現場資源對於堆棧溢出而言是無關緊要的,因爲它們傾向於吸引自以爲是的答案和垃圾郵件。相反,請描述該問題以及迄今爲止已解決的問題。](http://meta.stackoverflow.com/questions/254393) –

回答

0
data = ['PROBABILITY AND STATISTICS B+', 'DISCRETE MATHEMATICS A', 'DATABASE MANAGEMENT SYSTEMS C+', 'FORMAL LANGUAGES AND AUTOMATA THEORY A'] 

for line in data: 
    print '{:40}{:<5}'.format(' '.join(line.split()[:-1]), ' '.join(line.split()[-1:])) 

$ python neat_print.py 
PROBABILITY AND STATISTICS    B+ 
DISCRETE MATHEMATICS     A 
DATABASE MANAGEMENT SYSTEMS    C+ 
FORMAL LANGUAGES AND AUTOMATA THEORY A 
+0

{:<5},這是什麼意思? – Harry

+0

此命令爲您要分入文本的文本保留5個空格,並將文本對齊到左側。如果要對齊中心,請使用「{:^ 5}」,或者如果您想對齊,請使用「{:> 5}」。 – Chirag

-1

有很多不同的解決方案。其中最快實施的可能是使用terminaltables。下面是從官方文檔的例子在這裏https://pypi.python.org/pypi/terminaltables

from terminaltables import AsciiTable 
table_data = [ 
    ['Heading1', 'Heading2'], 
    ['row1 column1', 'row1 column2'], 
    ['row2 column1', 'row2 column2'], 
    ['row3 column1', 'row3 column2'] 
] 
table = AsciiTable(table_data) 
print table.table 
+--------------+--------------+ 
| Heading1  | Heading2  | 
+--------------+--------------+ 
| row1 column1 | row1 column2 | 
| row2 column1 | row2 column2 | 
| row3 column1 | row3 column2 | 
+--------------+--------------+ 
-1

發現使用pandas

假設你的數據的另一種方法是如下,

import pandas as pd  

subject = ['X', 'Y', 'Z'] 
grade = ['A','A','B'] 

他們閱讀到dataframe並打印

d = pd.DataFrame({'Subject': subject, 'Grade': grade}) 
d = d[d.columns[::-1]] #changing the order of columns 
print(d.to_string(index=False)) #print without index 
Subject Grade 
X  A 
Y  A 
Z  B