是否有方法在python中创建具有灵活{}调整的格式化字符串?
默认的方法是:
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.'但是,有没有一种方法来编码“A和B之间的距离”灵活?像这样..?
#not working
In [2]: x = 20
In [3]: "{:x}Hey! You are {} blocks away.".format("Hey! A", x-6)
Out[3]: 'Hey A! Hey B! You are 14 blocks away.'
In [2]: x = 30
In [3]: "{:x}Hey! You are {} blocks away.".format("Hey! A", x-6)
Out[3]: 'Hey A! Hey B! You are 14 blocks away.'或者还有其他简单方便的方法来完成它呢?
发布于 2018-03-07 00:36:05
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)您可以在“嵌套参数和更复杂的示例”在这里下面看到更多的示例。
发布于 2018-02-18 17:59:15
这不是很漂亮,但这是一种方式:
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)https://stackoverflow.com/questions/48854765
复制相似问题