如何在Python中使用空格将字符串填充到固定长度?

use*_*230 43 python string format

我敢肯定,这是覆盖在很多地方,但我不知道这个动作的准确名称,我想这样做,我真的不能看它.我一直在阅读官方的Python书30分钟,试图找出如何做到这一点.

问题:我需要在一定长度的"字段"中放置一个字符串.

例如,如果名称字段为15个字符长,我的名字叫约翰,我会得到"约翰",其次是11位创建15个字符的领域.

我需要这个用于为变量"name"输入的任何字符串.

我知道它可能是某种形式的格式化,但我找不到确切的方法来做到这一点.帮助将不胜感激.

Gam*_*iac 85

这非常简单format:

>>> a = "John"
>>> "{:<15}".format(a)
'John           '
Run Code Online (Sandbox Code Playgroud)

  • 如果文本超过15个字符,`format`不会截断它.要做到这一点写:`'{:<15}'.format(a [:15])` (5认同)
  • 从Python版本3.6开始,您可以使用f-strings而不是string.format()`f"{a:<15}"` (4认同)
  • 我[在这里]找到了我自己问题的答案(https://www.python.org/dev/peps/pep-3101/#standard-format-specifiers);如果需要右对齐,只需将“&lt;”切换为“&gt;”,然后在“&lt;”或“&gt;”之前输入填充字符。例如,“{:0&gt;5}”.format(167)` 生成字符串“00167”。如果有符号数字,可以将“&gt;”替换为“=”,即“{:0=5}”.format(-167),得到符号和数字之间的填充字符,即“” -0167'` (2认同)

Ism*_*awi 61

您可以ljust在字符串上使用该方法.

>>> name = 'John'
>>> name.ljust(15)
'John           '
Run Code Online (Sandbox Code Playgroud)

请注意,如果名称超过15个字符,ljust则不会截断它.如果您希望最终只有15个字符,则可以对结果字符串进行切片:

>>> name.ljust(15)[:15]
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这个,但是嘿,那也很酷。我个人更喜欢所有字符串操作的`format`:P +1 (2认同)

Jus*_*ess 15

如果你有 python 3.6 或更高版本,你可以使用 f 字符串

>>> string = "John"
>>> f"{string:<15}"
'John           '
Run Code Online (Sandbox Code Playgroud)

或者如果你喜欢它在左边

>>> f"{string:>15}"
'          John'
Run Code Online (Sandbox Code Playgroud)

居中

>>> f"{string:^15}"
'     John      '
Run Code Online (Sandbox Code Playgroud)

如需更多变化,请随时查看文档:https : //docs.python.org/3/library/string.html#format-string-syntax

  • 特别酷的是,您还可以轻松插入之前计算的长度:`f"{string:&lt;{calculated_length}}"`! (3认同)

mat*_*ani 13

您可以使用rjustljust函数在字符串之前或之后添加特定字符以达到特定长度。这些方法的第一个参数是转换字符串后的总字符数。

右对齐(添加到左侧)

numStr = '69' 
numStr = numStr.rjust(5, '*')
Run Code Online (Sandbox Code Playgroud)

结果是***69

左对齐(添加到右侧)

对于左边:

numStr = '69' 
numStr = numStr.ljust(3, '#')
Run Code Online (Sandbox Code Playgroud)

结果将是69#

用前导零填充

另外,要添加零,您可以简单地使用:

numstr.zfill(8)
Run Code Online (Sandbox Code Playgroud)

这给了你00000069结果。