2016-11-15 248 views
0

所以我有一個CSV文件,它有三列。我可以讀取CSV文件,表格的每一行都是一個列表。但是,當我嘗試將它們打印爲一張表格時,由於文本的長度不同,所以它們沒有正確對齊。我相信我必須用%來格式化它們,但我不知道如何使它工作。 我有更多的行,但由於顯而易見的原因,我會只顯示第3CSV到Python,文本對齊

North America   USA   Washington 
Europe  Republic of Ireland Dublin 
Asia China  Beijing 

This is how my lists look like: 
["North America"," USA", "Washington"] 
["Europe"," Republic of Ireland", "Dublin"] 
["Asia"," China", "Beijing"] 

弄成這個樣子:

North America   USA      Washington 
Europe    Republic of Ireland  Dublin 
Asia     China      Beijing 

我不想使用prettyprint或similiar庫,因爲我相信這個問題的解決方案對我更有利,所以我可以理解事情的工作方式。

+0

[我怎樣才能用空格填充Python字符串?](http:// stackoverflow。com/questions/5676646/how-can-i-fill-a-python-string-with-spaces) – mattsap

+0

使用python中的標籤「\ t」 – Maddy

+0

@Mani Tab由於長度不同會不起作用 –

回答

4

使用ljust()

可以使用ljust()功能(串)。

ljust將從右側填充空格(如果指定了任何其他字符)。
用法示例:

>>> 'hello'.ljust(10) 
'hello  ' 
>>> 'hello'.ljust(10, 'A') 
'helloAAAAA' 

所以,當你打印值,只是墊他們使用ljust

假設有a - 列出一個清單,其中包含你的價值觀:

for b in a: 
    for c in b: 
     print c.ljust(15), 
    print "" 

使用format

你可以使用字符串format功能用於這一目的:

>>> '{:10}'.format('hello') 
'hello  ' 

標準格式說明符的一般格式爲:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 
fill  ::= <any character> 
align  ::= "<" | ">" | "=" | "^" 
sign  ::= "+" | "-" | " " 
width  ::= integer 
precision ::= integer 
type  ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%" 

另一種方法是使用字符串format

>>> '{text: <10}'.format(text='hi') 
'hi  ' 

使用slicing

那麼,它可能被認爲是更優雅或Python化(??)使用該方法,但我不親自喜歡它(?):

>>> ('hello' + 10 * ' ')[:10] 
'hello  ' 

使用打印格式

你可以打印時使用百分比符號,用於格式化C風格的printf文件...

沒關係,這不是一個好主意。去別的地方看看吧!