首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python3:打印和.format()的{}内的可变长度值

python3:打印和.format()的{}内的可变长度值
EN

Stack Overflow用户
提问于 2018-02-18 17:48:49
回答 2查看 386关注 0票数 0

是否有方法在python中创建具有灵活{}调整的格式化字符串?

默认的方法是:

代码语言:javascript
复制
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之间的距离”灵活?像这样..?

代码语言:javascript
复制
#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.'

或者还有其他简单方便的方法来完成它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-07 00:36:05

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

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

如果您想避免在本例中考虑编号,可以将提供宽度的参数命名为通过关键字传递的参数,例如width

代码语言:javascript
复制
"{:{width}}Hey! You are {} blocks away.".format("Hey! A", x-6, width=x)

您可以在“嵌套参数和更复杂的示例”在这里下面看到更多的示例。

票数 3
EN

Stack Overflow用户

发布于 2018-02-18 17:59:15

这不是很漂亮,但这是一种方式:

代码语言:javascript
复制
x = 20

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

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

替代语法:

代码语言:javascript
复制
''.join(("{:", str(x), "}Hey! You are {} blocks away.")).format("Hey! A", x-6)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48854765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档