Python 字符串格式化之 .format()

目录

参数

数字格式化

转义


        自版本 2.6 开始,Python 新增一格式化字符串的函数—— .format(),大大增强了字符串格式化的功能。基本语法是通过槽( {} )和冒号()来代替之前的 % 

参数

        format() 函数的参数灵活多变,可以不受个数的限制,其位置也可以不按顺序。 

# 不指定位置,默认自左而右顺序
>>> '{} {} {} {} {}'. format ('Together', 'for', 'a', 'Shared', 'Future') 
'Together for a Shared Future'

# 指定位置
>>> '{0} {1} {4}'. format ('Together', 'for', 'a', 'Shared', 'Future') 
'Together for Future'

        注意:位置的索引为自 0 开始,正向递增。

        也可以设置参数:

# 通过赋值设置参数
>>> '姓名:{name},性别:{sex},年龄:{age}岁'. format(name = '张三', sex = '男', age = '3')
'姓名:张三,性别:男,年龄:3岁'

# 通过字典设置参数
>>> info = {'name' : '张三', 'sex' : '男', 'age' : 3}
>>> '姓名:{name},性别:{sex},年龄:{age}岁'. format(**info)
'姓名:张三,性别:男,年龄:3岁'

# 通过列表索引设置参数
>>> l = ['张三', '男', 3]
>>> '姓名:{0[0]},性别:{0[1]},年龄:{0[2]}岁'. format(l)
'姓名:张三,性别:男,年龄:3岁'

        注意,通过列表索引设置参数时,0 是必需的。

        也可以向 str.format() 传入对象:

>>> class info(object):
        def __init__(self, name, sex, age):
            self.name = name
            self.sex = sex
            self.age = age

>>> someone = info('张三', '男', 3)
>>> '姓名:{0.name},性别:{0.sex},年龄:{0.age}岁'. format(someone)
'姓名:张三,性别:男,年龄:3岁'

数字格式化

        数字格式化为数据处理之必需,下表展示了 .format() 格式化数字的多种形式:

数字 格式 输出 描述
3.1415926 {:.2f} '3.14' 保留小数点后两位
3.1415926 {:+.2f} '+3.14' 带符号,保留小数点后两位
-1 {:+.2f} '-1.00' 带符号,保留小数点后两位
2.71828 {:.0f} '3' 不带小数
5 {:0>2} '05' 左边补零,宽度为2
5 {:x<4} '5xxx' 右边补x ,宽度为4
1000000 {:,} '1,000,000' 逗号分隔
0.5 {:.2%} '50.00%' 百分数,保留小数点后两位
1000000000 {:.2e} '1.00e+09' 指数
9 {:>10} '         9' 右对齐(默认,宽度为10)
9 {:<10} '9         ' 左对齐(宽度为10)
9 {:^10} '    9     ' 中间对齐(宽度为10)
13 {:b} '1101' 二进制
{:d} '13' 十进制
{:o} '15' 八进制
{:x} 'd' 十六进制
{:#x} '0xd'
{:#X} '0XD'

注:

  • ^<> 分别表示居中,左对齐,右对齐,其后数字表示宽度。 
  • 号后面带欲填充的字符,只能为一个,默认为空格。
  • 表示在正数前显示 +,负数前显示 -;  (空格)则表示在正数前加空格。
  • b、d、o、x 分别表示二进制、十进制、八进制、十六进制。

转义

        此外,还可以使用大括号 {} 来转义大括号:

>>> '{}'.format('abc')
'abc'

>>> '{{}}'.format('abc')
'{0}'

>>> '{{{}}}'.format('abc')
'{abc}'

>>> '{{{[1]}}}'.format('abc')
'{b}'

你可能感兴趣的:(Python语言学习笔记,python,字符串,格式化)