python格式化字符串

简介

Python 目前有两种进行格式化字符串的方式:

  • 使用 % 操作符进行格式化字符串
  • 使用 str.format() 方法进行格式化字符串

官方推荐的方式是使用 str.format 方法。

官方文档链接:

Python 2.6以前:%操作符

在Python 2.6出现之前,字符串迭代只有一种方法,就是%(也是取模)操作符,%操作符支持unicode和str类型的Python字符串,效果和C语言中的sprintf()方法相似,下面是一个使用%格式化字符串的例子:

print("I'm %s. I'm %d year old" % ('Tom', 27))

%符号前面使用一个字符串作为模板,模板中有标记格式的占位符号,%后面是一个tuple或者dict,用来传递需要格式化的值。占位符控制着显示的格式,下面列表展示了占位符的种类:

符号 解释
%d 十进制整数
%i 十进制整数
%s 字符串(调用str()方法生成)
%r 字符串(调用repr()方法生成)
%f 浮点数
%F 浮点数
%o 八进制整数
%u 无符号整数
%c 单个字符

除了对数据类型的指定,%操作符还支持更复杂的格式控制

%[数据名称][对齐标志][宽度].[精度]类型
数据名称 数据名称用于字典复制,如果%符号后面传递的数组就不需要填写了
对齐标志 有+、-、’ '、0四种。+表示正负数符号,-表示左对齐,空格表示在左侧填充一个空格,0表示用0填充
宽度 表示格式化后的字符串长度,位数不足用0或空格补齐
精度 小数点后的位数
类型 数据类型(参考占位符种类)

例如:print(’%08.3f’ % 12.34)会输出0012.340

Python 2.6:format函数

到Python2.6时,出现了一种新的字符串格式化方式,str.format()函数,相比于%操作符,format函数使用{}和:代替了%,威力更加强大,在映射关系方面,format函数支持位置映射、关键字映射、对象属性映射、下标映射等多种方式,不仅参数可以不按顺序,也可以不用参数或者一个参数使用多次,下面通过几个例子来说明。

'{1} {0}'.format('abc', 123)  # 可以不按顺序进行位置映射,输出'123 abc'

'{} {}'.format('abc', 123)  # 可以不指定参数名称,输出'abc 123'

'{1} {0} {1}'.format('abc', 123)  # 参数可以使用多次,输出'123 abc 123'

'{name} {age}'.format(name='tom', age=27)  # 可以按关键字映射,输出'tom 27'

'{person.name} {person.age}'.format(person=person)  # 可以按对象属性映射,输出'tom 27'

'{0[1]} {0[0]}'.format(lst)  # 通过下标映射

可以看到,format函数比%操作符使用起来更加方便,不需要记住太多各种占位符代表的意义,代码可读性也更高。在复杂格式控制方面,format函数也提供了更加强大的控制方式:

[[填充字符]对齐方式][符号标志][#][宽度][,][.精度][类型]

例如:

'{:S^+#016,.2f}'.format(1234)  # 输出'SSS+1,234.00SSSS'

更多的细节请参看:

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务