python format格式控制

本文介绍了Python中使用格式化字符串的各种技巧,包括位置参数、关键字参数、填充与格式化、精度与进制转换以及索引的使用。这些技巧有助于提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用法:

  它通过{}和:来代替传统%方式

 

1、使用位置参数

要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表

复制代码
>>> li = ['hoho',18]
>>> 'my name is {} ,age {}'.format('hoho',18)
'my name is hoho ,age 18'
>>> 'my name is {1} ,age {0}'.format(10,'hoho')
'my name is hoho ,age 10'
>>> 'my name is {1} ,age {0} {1}'.format(10,'hoho')
'my name is hoho ,age 10 hoho'
>>> 'my name is {} ,age {}'.format(*li)
'my name is hoho ,age 18'
复制代码

 

2、使用关键字参数

要点:关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可

>>> hash = {'name':'hoho','age':18}
>>> 'my name is {name},age is {age}'.format(name='hoho',age=19)
'my name is hoho,age is 19'
>>> 'my name is {name},age is {age}'.format(**hash)
'my name is hoho,age is 18'

 

3、填充与格式化

:[填充字符][对齐方式 <^>][宽度]

>>> '{0:*>10}'.format(10)  ##右对齐
'********10'
>>> '{0:*<10}'.format(10)  ##左对齐
'10********'
>>> '{0:*^10}'.format(10)  ##居中对齐
'****10****'

 

4、精度与进制

复制代码
>>> '{0:.2f}'.format(1/3)
'0.33'
>>> '{0:b}'.format(10)    #二进制
'1010'
>>> '{0:o}'.format(10)     #八进制
'12'
>>> '{0:x}'.format(10)     #16进制
'a'
>>> '{:,}'.format(12369132698)  #千分位格式化
'12,369,132,698'
复制代码

 

5、使用索引

>>> li
['hoho', 18]
>>> 'name is {0[0]} age is {0[1]}'.format(li)
'name is hoho age is 18

### Python中`str.format()`方法的用法与优势 #### 方法用法 `str.format()`是一种强大的字符串格式化工具,支持多种参数传递方式和复杂的格式化选项。以下是其主要用法: 1. **位置参数**:通过索引指定参数的位置。 ```python print("The first number is {}, and the second is {}".format(10, 20)) # 输出: The first number is 10, and the second is 20 ``` 2. **关键字参数**:通过参数名称指定值。 ```python print("Name: {name}, Age: {age}".format(name="Alice", age=30)) # 输出: Name: Alice, Age: 30 ``` 3. **嵌套结构**:支持对复杂数据结构(如字典或列表)进行格式化。 ```python data = {'name': 'Bob', 'age': 25} print("Name: {person[name]}, Age: {person[age]}".format(person=data)) # 输出: Name: Bob, Age: 25 ``` 4. **格式化选项**:支持数字格式化,如逗号分隔、百分比、指数记法等[^1]。 ```python print("{:,}".format(100000)) # 以逗号分隔的数字 # 输出: 100,000 print("{:.2%}".format(0.23456)) # 百分比格式 # 输出: 23.46% print("{:.2e}".format(0.23456)) # 指数记法 # 输出: 2.35e-01 ``` #### 对比 `%` 格式化 `str.format()`相较于传统的占位符`%`格式化有以下显著优势: 1. **灵活性**:`str.format()`支持更复杂的格式化操作,例如嵌套结构和动态索引[^2]。 ```python # 使用str.format()进行嵌套 data = {'value': 42} print("The value is {d[value]}".format(d=data)) # 输出: The value is 42 ``` 2. **可读性**:在处理多个参数时,`str.format()`使用命名参数,使代码更加清晰易懂[^3]。 ```python # 使用命名参数提高可读性 name = "Charlie" age = 28 print("Name: {n}, Age: {a}".format(n=name, a=age)) # 输出: Name: Charlie, Age: 28 ``` 3. **功能丰富性**:`str.format()`提供了更多内置格式化选项,如对齐、填充、宽度控制等。 ```python # 对齐和填充示例 print("|{:<10}|{:^10}|{:>10}|".format('left', 'center', 'right')) # 输出: |left | center | right| ``` 4. **扩展性**:`str.format()`更容易扩展到新的功能需求,而`%`格式化较为固定且难以调整。 #### 性能比较 在简单场景下,`%`格式化的速度可能略快于`str.format()`,但在复杂场景下两者性能差异可以忽略不计。因此,在实际开发中应优先考虑代码的可读性和维护性而非微小的性能差异[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值