所以我有一个包含三列的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
我不想使用漂亮的图纸或类似的库,因为我相信这个问题的解决方案对我来说会更有益,所以我可以理解它是如何工作的。
答案 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 '
嗯,使用这种方法可能会被认为更优雅(?)或Pythonic(??),但我个人并不喜欢它:
>>> ('hello' + 10 * ' ')[:10]
'hello '
您可以在打印时使用百分号,以便使用C样式printf格式化内容...
没关系,这不是个好主意。去看别的地方吧!