CSV到python,文本对齐

时间:2016-11-15 19:57:07

标签: python csv alignment

所以我有一个包含三列的CSV文件。我能够读取CSV文件,表格的每一行都是一个列表。但是,当我尝试像桌子一样打印它们时,由于文本的长度不同,它们没有正确对齐。我相信我必须用%格式化它们,但我不知道如何使它工作。 我有更多的行,但由于显而易见的原因,我只会显示前3行。

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

我不想使用漂亮的图纸或类似的库,因为我相信这个问题的解决方案对我来说会更有益,所以我可以理解它是如何工作的。

1 个答案:

答案 0 :(得分:3)

使用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

嗯,使用这种方法可能会被认为更优雅(?)或Pythonic(??),但我个人并不喜欢它:

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

使用打印格式

您可以在打印时使用百分号,以便使用C样式printf格式化内容...

没关系,这不是个好主意。去看别的地方吧!