我想用空格填写一个字符串。我知道以下适用于零:
>>> print "'%06d'"%4
'000004'
但是当我想要这个时我该怎么办?:
'hi '
当然我可以测量字符串长度并做str+" "*leftover
,但我想要最短路。
答案 0 :(得分:594)
您可以使用str.ljust(width[, fillchar])
执行此操作:
以长度为 width 的字符串返回左对齐的字符串。使用指定的 fillchar (默认为空格)完成填充。如果 width 小于
len(s)
,则返回原始字符串。
>>> 'hi'.ljust(10)
'hi '
答案 1 :(得分:313)
除非您需要支持Python 2.5,否则您可以(也可能应该)使用string-formatting mini-language,如下所示:
'{0: <16}'.format('Hi')
答案 2 :(得分:96)
新的(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 '
答案 3 :(得分:72)
你可以试试这个:
print "'%-100s'" % 'hi'
答案 4 :(得分:38)
正确的方法是使用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!
答案 5 :(得分:34)
使用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.... '
这些string formatting operations具有在Python v2和v3中工作的优势。
有时看看pydoc str
:那里有很多好东西。
答案 6 :(得分:18)
从Python 3.6开始,你可以做到
>>> strng = 'hi'
>>> f'{strng: <10}'
或者,如果你的填充大小是变量,就像这样(感谢@Matt M。!):
>>> to_pad = 10
>>> f'{strng: <{to_pad}}'
答案 7 :(得分:17)
你也可以居中你的字符串:
'{0: ^20}'.format('nice')
答案 8 :(得分:7)
答案 9 :(得分:5)
只需删除0即可添加空格:
>>> print "'%6d'"%4
答案 10 :(得分:3)
使用切片不会更加pythonic吗?
例如,要填充右边有空格的字符串,直到它的长度为10个字符:
>>> x = "string"
>>> (x + " " * 10)[:10]
'string '
用左边的空格填充它,直到它长15个字符:
>>> (" " * 15 + x)[-15:]
' string'
当然,它需要知道你要填充多长时间,但它并不需要测量你开始使用的字符串的长度。
答案 11 :(得分:1)
您可以使用列表理解来做到这一点,这也会使您对空格数量有所了解,并且只能是一个内衬。
"hello" + " ".join([" " for x in range(1,10)])
output --> 'hello '
答案 12 :(得分:1)
一个很好的技巧来代替各种打印格式:
(1)右边有空格的填充垫:
('0000' + str(2))[-4:]
(2)左侧填充前导零的数字:
import (
"fmt"
"github.com/bytedance/go-tagexpr/validator"
)
func Example() {
var vd = validator.New("vd")
type InfoRequest struct {
Name string `vd:"($!='Alice'||(Age)$==18) && regexp('\\w')"`
Age int `vd:"$>0"`
}
info := &InfoRequest{Name: "Alice", Age: 18}
fmt.Println(vd.Validate(info) == nil)
}
答案 13 :(得分:0)
+ =可用于附加到字符串
>>> string = 'hi'
>>> for s in range(0,5):
... string += ' '
...
>>> string
'hi '