python字符串格式化问题
本帖最后由 夏橙M兮 于 2020-8-19 12:15 编辑fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
print(fmt.format('Apples', 0.4))
这个花括号有点多,把我看晕了。怎么好理解呀?这Python怎么解析呢?
我自己改了一下,输出感觉不对呀。怎么回事?
myfmt = '{:{}}{:>{}.2f}'.format(item_width, price_width)我输出编译错误,怎么回事呢?
来个大神帮我理解一下。感谢。 大括号在format函数中是占位,如果原本字符串就是 `{}` 那么你需要转义,在format函数中,转义是用一对大括号将需要转义的部分包起来,即 `{{}}`
所以 `'{{:{}}}{{:>{}.2f}}'` 中,只有两个位置起占位作用,其他大括号就是普通字符,第一次format格式化后变为 `{:7}{:>6.2f}` (假如`item_width = 7 price_width = 6`)
然后第二次format的时候,这时表达式变成了 `{:7}{:>6.2f}`,`:7`意思字符总长度为7,在右边填充(没有指定填充字符,默认空格);`:>6.2f`意思是小数点保留2位,字符串总长度为6,左边补齐(没有指定填充字符,默认空格),`print(fmt.format('Apples', 0.4))` 的结果就是 `Apples 0.40` 中间三个空格,第一个是`{:7}`对`Apples`位数补齐到7位填充上的,后两个空格是`{:>6.2f}`对`0.4`小数点扩充到两位后的位数补齐到6位的时候填充的 本帖最后由 知心 于 2020-8-18 18:18 编辑
代码片段太少,不好分析。同为菜鸟的我给出的分析,花括号是左右两部分内容,冒号可能是海象运算符。你可以参照这个思路分析一下 def test(item_width, price_width):
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
print(fmt)
test('Apples', 0.4)
你这代码本就写错了 把字符串里的{}替换成format里的参数,{{在字符串里转义成{,}}同理转义成},编译错误那是你没定义format参数的值吧 本帖最后由 kiopc 于 2020-8-18 18:25 编辑
委实有点多啊,看花了眼
```python
{}.2f:对应的是price
:{}:对应的是 item
``` list_width = 50
price_width = 10
item_width = list_width - price_width
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
# 该语句执行后为 fmt = {:40}{:>10.2f},当 {{:{}}} 被格式化完毕输出时,最外层的占位符,自然就消失了,变成 {:{}} ,而最内层的占位符,又有宽度值item_width替换,所以结果就是 {:40}。同理{{:>{}.2f}}会被格式化为{:>10.2f}。
# 左侧左对齐,右侧数字右对齐
print(fmt.format('Apples', 0.4))# 输出为:Apples 0.40
item_width = "APples"
price_width = 0.4
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
print(fmt)
{:APples}{:>0.4.2f} 不清楚 小白一个 按顺序一个括号套一下就对了,可以用用现在新的格式式字符串更好用,体验也好,
a = "baidu"
b = f"{a}.com" 额微粒波地 发表于 2020-8-18 18:18
def test(item_width, price_width):
fmt = '{{:{}}}{{:>{}.2f}}'.format(i ...
没有错,我自己运行了的,这可是java基础教程上的案列。这有两个format你少写了一个。
页:
[1]
2