首页 文章

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

提问于
浏览
381

我想用空格填写一个字符串 . 我知道以下适用于零:

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

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

'hi    '

当然我可以测量弦长并做 str+" "*leftover ,但我想要最短路 .

13 回答

  • 1

    使用切片不是更加pythonic?

    例如,要填充右侧有空格的字符串,直到它长达10个字符:

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

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

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

    当然,它需要知道你要填充多长时间,但它不需要测量你开始使用的字符串的长度 .

  • 4

    你可以使用列表理解来做到这一点,这也可以让你对空间的数量有所了解,并且可以是一个单行 .

    "hello" + " ".join([" " for x in range(1,10)])
    output --> 'hello                 '
    
  • 77

    您可以使用str.ljust(width[, fillchar])执行此操作:

    以长度为一的字符串返回左对齐的字符串 . 使用指定的fillchar完成填充(默认为空格) . 如果width小于len(s),则返回原始字符串 .

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

    =可用于附加到字符串

    >>> string = 'hi'
    >>> for s in range(0,5):
    ...    string += ' '
    ... 
    >>> string
    'hi          '
    
  • 0

    你可以试试这个:

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

    除非您需要支持Python 2.5,否则您可以(也可能应该)使用string-formatting mini-language,如下所示:

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

    使用str.ljust()

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

    您还应该考虑string.zfill()str.ljust()str.center()进行字符串格式化 . 这些可以链接并指定'填充'字符,因此:

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

    这些string formatting operations具有使用Python v2和v3的优势 .

    有时看看pydoc str:那里有很多好东西 .

  • 7

    使用Python 2.7的mini formatting for strings

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

    左对齐,并使用''字符填充8个字符 .

  • 12

    新的(ish)string format method允许你用嵌套的关键字参数做一些有趣的事情 . 最简单的情况:

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

    如果要将 16 作为变量传递:

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

    如果要传递whole kit and kaboodle的变量:

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

    结果(你猜对了):

    'Hi              '
    
  • 28

    你也可以 center 你的字符串:

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

    正确的方法是使用Python的格式语法,如the official documentation所述

    对于这种情况,它只是:
    '{: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!
    
  • 287

    只需删除0,它将添加空格:

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

    从Python 3.6开始,你就可以做到

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

    literal string interpolation .

    或者,如果您的填充大小是变量,就像这样(感谢@Matt M.!):

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

相关问题