关于Python中str.ljust字符串填充的行为
我有一个情况,我正在为
matplotlib.colorbar
设置标签,我想用下面的代码均匀分配描述
temp = ""
for section in range(total_section_len):
temp.ljust(60//(total_section_len * 5))
temp += "stream 0"
temp.ljust(60//(total_section_len * 5))
temp += "stream 1"
temp.ljust(60//(total_section_len * 5))
print temp
我期待的效果是
" stream0 stream1 "
但实际上我得到的是
"stream0stream1"
为什么会出现这样的
str.ljust
行为呢?
谢谢
2 个回答
0
ljust(width, fillchr) 是一个方法,它会把字符串靠左对齐,宽度由你指定,并用 fillchr 填充,默认填充的是空格。
所以
a = ''
b = a.ljust(10)
print(a)
>>> ''
print(b)
>>> ' '
这个方法会把一个左对齐的字符串返回给变量 b,而变量 a 不会被修改。
因此,这段代码应该可以正常工作:
a = ''
a += ''.ljust(10) + 'stream0'
a += ''.ljust(10) + 'stream1'
print(a)
>>> ' stream0 stream1'
0
ljust
这个函数的参数是字符串的“最小”长度。只有当这个值比当前字符串的长度还要长时,它才会在字符串后面加空格。
除非total_section_len
的值只有1,否则60//(total_section_len * 5)
的结果会小于你的字符串长度,所以不会进行填充。
另外,字符串是不可变的,这意味着它不会直接修改原来的字符串。你需要使用返回的结果,比如说temp = temp.ljust(...)
。