我怎样才能用空格填充一个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插值 。