python3:{}内的可变长度值,适用于print& 。格式()

时间:2018-02-18 17:48:50

标签: python python-3.x printing string.format

有没有办法在python中使用灵活的{}调整创建格式化字符串?
默认方式是:

>>> titles.a['href']
'https://therecipecritic.com/2018/02/mint-oreo-cheesecake/'

但有没有办法将“A和B之间的距离”编码灵活?像这样..?

In [1]: "{:20}Hey B! You are {} blocks away.".format("Hey A!", 20-6)
Out[1]: 'Hey A!              Hey B! You are 14 blocks away.'

或者还有其他简单方便的方法来实现它吗?

2 个答案:

答案 0 :(得分:1)

Python允许嵌套格式运算符。在按位置操作时,每个位置参数都由其开括号出现的位置计算。因此,要根据需要使用x来证明"Hey! A",您可以这样做:

"{:{}}Hey! You are {} blocks away.".format("Hey! A", x, x-6)
   ^^ These brackets fill in the desired width using the second positional arg

如果你想避免在这种情况下考虑编号,你可以命名提供宽度的参数,通过关键字传递它,例如: width

"{:{width}}Hey! You are {} blocks away.".format("Hey! A", x-6, width=x)

您可以在"Nesting arguments and more complex examples" here下看到更多示例。

答案 1 :(得分:0)

这不是很好,但它是一种方式:

x = 20

("{:"+str(x)+"}Hey! You are {} blocks away.").format("Hey! A", x-6)

# 'Hey! A              Hey! You are 14 blocks away.'

替代语法:

''.join(("{:", str(x), "}Hey! You are {} blocks away.")).format("Hey! A", x-6)