我想用空格填写一个字符串 . 我知道以下适用于零:
>>> print "'%06d'"%4 '000004'
但是当我想要这个时我该怎么办?
'hi '
当然我可以测量弦长并做 str+" "*leftover ,但我想要最短路 .
str+" "*leftover
使用切片不是更加pythonic?
例如,要填充右侧有空格的字符串,直到它长达10个字符:
>>> x = "string" >>> (x + " " * 10)[:10] 'string '
用左边的空格填充它,直到它长15个字符:
>>> (" " * 15 + x)[-15:] ' string'
当然,它需要知道你要填充多长时间,但它不需要测量你开始使用的字符串的长度 .
你可以使用列表理解来做到这一点,这也可以让你对空间的数量有所了解,并且可以是一个单行 .
"hello" + " ".join([" " for x in range(1,10)]) output --> 'hello '
您可以使用str.ljust(width[, fillchar])执行此操作:
以长度为一的字符串返回左对齐的字符串 . 使用指定的fillchar完成填充(默认为空格) . 如果width小于len(s),则返回原始字符串 .
>>> 'hi'.ljust(10) 'hi '
=可用于附加到字符串
>>> string = 'hi' >>> for s in range(0,5): ... string += ' ' ... >>> string 'hi '
你可以试试这个:
print "'%-100s'" % 'hi'
除非您需要支持Python 2.5,否则您可以(也可能应该)使用string-formatting mini-language,如下所示:
'{0: <16}'.format('Hi')
使用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:那里有很多好东西 .
使用Python 2.7的mini formatting for strings:
'{0: <8}'.format('123')
左对齐,并使用''字符填充8个字符 .
新的(ish)string format method允许你用嵌套的关键字参数做一些有趣的事情 . 最简单的情况:
>>> '{message: <16}'.format(message='Hi') 'Hi '
如果要将 16 作为变量传递:
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 '
你也可以 center 你的字符串:
'{0: ^20}'.format('nice')
正确的方法是使用Python的格式语法,如the official documentation所述
对于这种情况,它只是:'{:10}'.format('hi')哪个输出:'hi '
'{:10}'.format('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!
只需删除0,它将添加空格:
>>> print "'%6d'"%4
从Python 3.6开始,你就可以做到
>>> strng = 'hi' >>> f'{strng: <10}'
与literal string interpolation .
或者,如果您的填充大小是变量,就像这样(感谢@Matt M.!):
>>> to_pad = 10 >>> f'{strng: <{to_pad}}'
13 回答
使用切片不是更加pythonic?
例如,要填充右侧有空格的字符串,直到它长达10个字符:
用左边的空格填充它,直到它长15个字符:
当然,它需要知道你要填充多长时间,但它不需要测量你开始使用的字符串的长度 .
你可以使用列表理解来做到这一点,这也可以让你对空间的数量有所了解,并且可以是一个单行 .
您可以使用str.ljust(width[, fillchar])执行此操作:
=可用于附加到字符串
你可以试试这个:
除非您需要支持Python 2.5,否则您可以(也可能应该)使用string-formatting mini-language,如下所示:
使用str.ljust():
您还应该考虑string.zfill(),str.ljust()和str.center()进行字符串格式化 . 这些可以链接并指定'填充'字符,因此:
这些string formatting operations具有使用Python v2和v3的优势 .
有时看看pydoc str:那里有很多好东西 .
使用Python 2.7的mini formatting for strings:
左对齐,并使用''字符填充8个字符 .
新的(ish)string format method允许你用嵌套的关键字参数做一些有趣的事情 . 最简单的情况:
如果要将
16
作为变量传递:如果要传递whole kit and kaboodle的变量:
结果(你猜对了):
你也可以 center 你的字符串:
正确的方法是使用Python的格式语法,如the official documentation所述
对于这种情况,它只是:
'{:10}'.format('hi')
哪个输出:
'hi '
说明:
几乎所有你需要知道的是^ .
更新:从python 3.6开始,使用文字字符串插值更方便!
只需删除0,它将添加空格:
从Python 3.6开始,你就可以做到
与literal string interpolation .
或者,如果您的填充大小是变量,就像这样(感谢@Matt M.!):