How can I fill out a Python string with spaces?
我想用空格填充一个字符串。我知道以下内容适用于Zero:
1 2 | >>> print "'%06d'"%4 '000004' |
但是如果我想要这个怎么办?:
1 | 'hi ' |
号
当然,我可以测量弦长,也可以做
您可以使用
Return the string left justified in a string of length width. Padding is done using the specified fillchar (default is a space). The original string is returned if width is less than
len(s) .
号
1 2 | >>> 'hi'.ljust(10) 'hi ' |
号
除非您需要支持python 2.5,否则您可以(也可能应该)使用字符串格式的迷你语言,如下所示:
1 | '{0: <16}'.format('Hi') |
新的(ish)字符串格式方法允许您使用嵌套的关键字参数做一些有趣的事情。最简单的情况是:
1 2 | >>> '{message: <16}'.format(message='Hi') 'Hi ' |
如果您想将
1 2 | >>> '{message: <{width}}'.format(message='Hi', width=16) 'Hi ' |
。
如果您想为整个kit和kaboodle传递变量:
1 2 3 4 5 6 | '{message:{fill}{align}{width}}'.format( message='Hi', fill=' ', align='<', width=16, ) |
结果是(你猜对了):
1 | 'Hi ' |
。
您可以尝试以下操作:
1 | print"'%-100s'" % 'hi' |
正确的方法是使用官方文档中描述的python格式语法。
对于这种情况,只需:江户十一〔七〕号哪些输出:埃多克斯1〔8〕
说明:
1 2 3 4 5 6 7 | format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] fill ::= align ::= "<" |">" |"=" |"^" sign ::= "+" |"-" |"" width ::= integer precision ::= integer type ::= "b" |"c" |"d" |"e" |"E" |"f" |"F" |"g" |"G" |"n" |"o" |"s" |"x" |"X" |"%" |
号
你所需要知道的几乎都在那里。
更新:从python 3.6开始,使用文字字符串插值更加方便!
1 2 3 | foo = 'foobar' print(f'{foo:10} is great!') # foobar is great! |
号
使用
1 2 | >>> 'Hi'.ljust(6) 'Hi ' |
对于字符串格式,还应该考虑使用
1 2 | >>> ('3'.zfill(8) + 'blind'.rjust(8) + 'mice'.ljust(8, '.')).center(40) ' 00000003 blindmice.... ' |
。
这些字符串格式化操作具有在Pythonv2和v3中工作的优势。
看一看江户记1(5):里面有很多好东西。
从python 3.6开始,您可以
1 2 | >>> strng = 'hi' >>> f'{strng: <10}' |
号
使用文字字符串插值。
或者,如果您的填充大小是一个变量,则如下所示(谢谢@matt m.!):
1 2 | >>> to_pad = 10 >>> f'{strng: <{to_pad}}' |
号
您还可以将字符串居中:
1 | '{0: ^20}'.format('nice') |
。
对字符串使用python 2.7的小格式:
1 | '{0: <8}'.format('123') |
。
此左对齐,并用""字符填充到8个字符。
只需删除0,它将添加空格:
1 | >>> print "'%6d'"%4 |
号
用切片会不会更像Python?
例如,要将右边带有空格的字符串填充到10个字符长:
1 2 3 | >>> x ="string" >>> (x +"" * 10)[:10] 'string ' |
号
要用左边的空格填充到15个字符长:
1 2 | >>> ("" * 15 + x)[-15:] ' string' |
号
当然,这需要知道你想要填充多长时间,但不需要测量你开始时的绳子长度。
一个很好的技巧来代替各种打印格式:
(1)右边有空格的垫子:
1 | ('hi' + ' ')[:8] |
(2)用左前导零填充:
1 | ('0000' + str(2))[-4:] |
。
你可以使用列表理解来完成它,这也会让你对空格的数量有一个概念,并且是一行代码。
1 2 | "hello" +"".join(["" for x in range(1,10)]) output --> 'hello ' |
号
+=可用于附加到字符串
1 2 3 4 5 6 | >>> string = 'hi' >>> for s in range(0,5): ... string += ' ' ... >>> string 'hi ' |
号