考虑下面的代码
line = "I am writing a question"
print('{0: >10}'.format(line))
这不能按预期工作。我期望输出
' I am writing a question'
我知道我可以通过其他方式实现这一点,比如首先使用一个print语句打印空格然后打印句子。但很想知道我可能做错了什么。
答案 0 :(得分:4)
你的行超过10个字符;宽度是一个最小值,适用于整个列。如果要添加10个空格,请始终在格式前加上前缀:
print(' {0}'.format(line))
如果您一直希望将字符串右对齐为33个字符的列(当前行的10个空格和23个字符),则将列宽设置为:
print('{0:>33}'.format(line))
现在,当您的line
值更长或更短时,将调整空白量以使输出再次变为33个字符。
演示:
>>> line = "I am writing a question"
>>> print(' {0}'.format(line))
I am writing a question
>>> print('{0:>33}'.format(line))
I am writing a question
>>> line = "question"
>>> print('{0:>33}'.format(line))
question
答案 1 :(得分:-1)
有一种内置方法:
https://docs.python.org/2/library/stdtypes.html#str.rjust
v = 'hi'
print v.rjust(4, ' ');
打印
' hi'