我怎样才能用空格填充一个Pythonstring?

我想用空格填充一个string。 我知道下面的工作为零:

>>> print "'%06d'"%4 '000004' 

但是当我想要这个时,我该怎么办?

 'hi ' 

当然我可以测量string的长度,并做str+" "*leftover ,但我想要最短的路。

你可以用str.ljust(width[, fillchar])来做到这一点:

以长度宽度的string返回左alignment的string。 填充是使用指定的fillchar完成的(默认是一个空格)。 如果宽度小于len(s)则返回原始string。

 >>> 'hi'.ljust(10) 'hi ' 

除非需要支持Python 2.5,否则(可能应该)使用string格式化的迷你语言 ,如下所示:

 '{0: <16}'.format('Hi') 

你可以试试这个:

 print "'%-100s'" % 'hi' 

新的(ish) string格式方法可以让你用嵌套的关键字参数做一些有趣的事情。 最简单的情况:

 >>> '{message: <16}'.format(message='Hi') 'Hi ' 

如果你想在16传递一个variables:

 >>> '{message: <{width}}'.format(message='Hi', width=16) 'Hi ' 

如果你想传递整个工具包和kaboodle的variables:

 >>> '{message:{fill}{align}{width}}'.format(message='Hi', fill=' ', align='<', width=16) 'Hi ' 

使用str.ljust()

 >>> 'Hi'.ljust(6) 'Hi ' 

你还应该考虑string.zfill()str.ljust()str.center()来进行string格式化。 这些可以被链接并且具有指定的“ 填充 ”字符,因此:

 >>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40) ' 00000003 blindmice.... ' 

这些string格式化操作具有在Python v2和v3中工作的优势。

有时候看看pydoc str那里有很多好东西。

这样做的正确方法是使用官方文档中描述的Python格式语法

对于这种情况,简单来说就是:
'{:10}'.format('hi')
其输出:
'hi '

说明:

 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" | "%" 

几乎所有你需要知道的是^。

更新:从python 3.6开始,使用string插值更方便!

 foo = 'foobar' print(f'{foo:10} is great!') # foobar is great! 

你也可以居中你的string:

 '{0: ^20}'.format('nice') 

使用Python 2.7的迷你格式化string :

 '{0: <8}'.format('123') 

这个左alignment,用“”字符填充到8个字符。

只要删除0,它会增加空间:

 >>> print "'%6d'"%4 

使用切片会不会更pythonic?

例如,要在右侧填充一个空格string,直到长度为10个字符为止:

 >>> x = "string" >>> (x + " " * 10)[:10] 'string ' 

用左边的空格填充它,直到它有15个字符长:

 >>> (" " * 15 + x)[-15:] ' string' 

它需要知道你想要打多久,当然,但它不需要测量你开始的string的长度。

它看起来像在Python 3.6中,你可以做

 >>> strng = 'hi' >>> f'{strng: <10}' 

与文字string插值 。