如何用空格填充Python字符串?

| 我想用空格填充字符串。我知道以下内容适用于零:
>>> print  \"\'%06d\'\"%4
\'000004\'
但是,当我想要这个时我该怎么办?:
\'hi    \'
当然,我可以测量字符串的长度并做
str+\" \"*leftover
,但是我想用最短的方法。     
已邀请:
您可以使用
str.ljust(width[, fillchar])
进行此操作:   返回长度为长度的字符串中左对齐的字符串。使用指定的fillchar填充(默认为空格)。如果宽度小于
len(s)
,则返回原始字符串。
>>> \'hi\'.ljust(10)
\'hi        \'
    
除非需要支持Python 2.5,否则您可以(并且应该应该)使用字符串格式的迷你语言,如下所示:
\'{0: <16}\'.format(\'Hi\')
    
新的(ish)字符串格式方法使您可以使用嵌套关键字参数来做一些有趣的事情。最简单的情况:
>>> \'{message: <16}\'.format(message=\'Hi\')
\'Hi             \'
如果要将
16
作为变量传递:
>>> \'{message: <{width}}\'.format(message=\'Hi\', width=16)
\'Hi              \'
如果要为整个工具包和kaboodle传递变量,请执行以下操作:
\'{message:{fill}{align}{width}}\'.format(
   message=\'Hi\',
   fill=\' \',
   align=\'<\',
   width=16,
)
结果(您猜对了):
\'Hi              \'
    
您可以尝试以下方法:
print \"\'%-100s\'\" % \'hi\'
    
正确的方法是使用官方文档中所述的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开始,使用文字字符串插值更加方便!
foo = \'foobar\'
print(f\'{foo:10} is great!\')
# foobar     is great!
    
使用
str.ljust()
>>> \'Hi\'.ljust(6)
\'Hi    \'
您还应该考虑使用
string.zfill()
str.ljust()
str.center()
进行字符串格式化。这些可以链接并指定\'fill \'字符,因此:
>>> (\'3\'.zfill(8) + \'blind\'.rjust(8) + \'mice\'.ljust(8, \'.\')).center(40)
\'        00000003   blindmice....        \'
这些字符串格式化操作具有在Python v2和v3中工作的优势。 有时候看一下23英镑:里面有很多好东西。     
从Python 3.6开始,您可以执行
>>> strng = \'hi\'
>>> f\'{strng: <10}\'
使用文字字符串插值。 或者,如果您的填充大小在一个变量中,则像这样(感谢@Matt M.!):
>>> to_pad = 10
>>> f\'{strng: <{to_pad}}\'
    
您还可以将字符串居中:
\'{0: ^20}\'.format(\'nice\')
    
对字符串使用Python 2.7的迷你格式:
\'{0: <8}\'.format(\'123\')
左对齐,并用\'\'字符填充到8个字符。     
只需删除0,它将增加空间:
>>> print  \"\'%6d\'\"%4
    
使用切片会不会更pythonic? 例如,要在字符串的右边填充空格,直到其长度为10个字符:
>>> x = \"string\"    
>>> (x + \" \" * 10)[:10]   
\'string    \'
要在其左侧填充空格,直到其长15个字符:
>>> (\" \" * 15 + x)[-15:]
\'         string\'
当然,它需要知道要填充多长时间,但是并不需要测量开始的字符串的长度。     
+ =可用于附加到字符串
>>> string = \'hi\'
>>> for s in range(0,5):
...    string += \' \'
... 
>>> string
\'hi          \'
    
您可以使用列表理解来做到这一点,这也会使您对空格的数量有所了解,并且只能是一个直线。
\"hello\" + \" \".join([\" \" for x in range(1,10)])
output --> \'hello                 \'
    
一个很好的技巧来代替各种打印格式: (1)在右边加空格:
(\'hi\' + \'        \')[:8]
(2)在左前导零处填充:
(\'0000\' + str(2))[-4:]
    

要回复问题请先登录注册