Answers:
您可以使用str.ljust(width[, fillchar])
:
返回长度为width的左对齐字符串。使用指定的fillchar(默认为空格)填充。如果width小于,则返回原始字符串
len(s)
。
>>> 'hi'.ljust(10)
'hi '
为了即使在格式化复杂的字符串时也可以使用灵活的方法,您可能应该使用string-formatting mini-language,无论使用哪种str.format()
方法
>>> '{0: <16} StackOverflow!'.format('Hi') # Python >=2.6
'Hi StackOverflow!'
的F-串
>>> f'{"Hi": <16} StackOverflow!' # Python >= 3.6
'Hi StackOverflow!'
'{message: <{fill}}'.format(message='Hi', fill='16')
str.format()
只使用一个模板,不要使用其他模板{...}
。只需使用该format()
函数即可,节省您的解析开销:format('Hi', '<16')
。
新的(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'
"'%+100s'" % 'hi'
起见,请将其放置在右边的位置上'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中使用。
看一下pydoc str
某个时间:里面有很多好东西。
只需删除0,它将增加空间:
>>> print "'%6d'"%4
使用切片会不会更pythonic?
例如,要在字符串的右边填充空格,直到其长度为10个字符:
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
要在其左侧填充空格,直到其长度为15个字符:
>>> (" " * 15 + x)[-15:]
' string'
当然,它需要知道要填充多长时间,但是并不需要测量开始的字符串的长度。
''.join(reversed(str))
比pythonpythonic多str[::-1]
,而我们都知道那是不对的。
(x + " " * 10)[:10]
在我看来,比使用更加令人费解x.ljust(10)
。
您可以使用列表理解来做到这一点,这也会使您对空格的数量有所了解,并且只能是一个内衬。
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '
s = "hi"
;s + (6-len(s)) * " "
相反(当-结果是负面的。)但是,使用解决确切问题的任何框架功能的答案将更易于维护(请参阅其他答案)
"%-6s" % s
左对齐和"%6s" % s
右对齐。