有没有办法在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.'
或者还有其他简单方便的方法来实现它吗?
答案 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)