【发布时间】:2017-03-12 08:55:22
【问题描述】:
恐怕这是一个基本的 Python 问题,但我找不到正确的答案。 我想在占位符前面添加一个填充空间。
这是我的例子:
user = 'Jhon'
'Hi {u}!'.format(u=user if user else '')
# result
'Hi Jhon!'
现在一切都很好,直到我的user var 为空或为 false,在这种情况下,这就是上面的结果
'Hi !'
# ^ notice the empty space
结果我想要'Hi!'。
现在我尝试使用 format() 填充选项,例如 {:>1},但 ofc 不起作用,因为它会添加足够的填充以达到 1 的字符长度。
我最终做了这样的事情:
'Hi{u:>{p}}!'.format(u=user if user else '', p=1+len(user))
以上工作正常,但我认为这有点骇人听闻,如果有一种我缺少的内置方法,我想现在这样做。
谢谢!
【问题讨论】:
-
避免问题:
'Hi {u}!'.format(u=user) if user else 'Hi!'- 易于阅读且灵活。 -
'Hi{u}!'.format(u=' ' + user if user else '')怎么样? -
你们俩确实是对的,@Ryan 的建议看起来既快速又清晰,但不幸的是,在我的情况下我无法使用它(示例字符串是一个简化的简化案例,以显示我的问题)。
-
如果@PM2Ring 将他的建议作为答案发布,我会将其标记为解决方案
标签: python string python-3.x formatting