Python格式化字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python格式化字符串相关的知识,希望对你有一定的参考价值。

一、通过%来格式化输出。

格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。

#普通传值方法
print(name:%s,age:%d %(mzc,20))
输出:name:mzc,age:20
#使用dict进行传值
print(my name is %(name)s,age %(age)d %{name:jerry,age:20})
输出:my name is jerry,age 20

打印浮点数、以及选择保留小数位数

保留的小数位数由输出控制符决定%.xf   x为保留位数

#浮点数不更改打印
print(width is %f %1.337)
输出:width is 1.337000

#选择保留的小数位数
print(width is %.2f %1.345)
输出:width is 1.34

指定占位符宽度:

print ("Name:%10s Age:%8d Height:%8.2f"%("Aviad",25,1.83))

输出效果:Name:     Aviad Age:      25 Height:    1.83

指定占位符宽度(左对齐)

print ("Name:%-10s Age:%-8d Height:%-8.2f"%("Aviad",25,1.83))

输出效果:Name:Aviad      Age:25       Height:1.83 

指定占位符(只能用0当占位符?)

print ("Name:%-10s Age:%08d Height:%08.2f"%("Aviad",25,1.83))

输出效果:Name:Aviad      Age:00000025 Height:00001.83

科学计数法

format(0.0015,.2e)

输出效果:‘1.50e-03‘

 

 

格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型,如下:

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"

 

Python中内置的%操作符可用于格式化字符串操作,控制字符串的呈现格式。Python中还有其他的格式化字符串的方式,但%操作符的使用是最方便的。

另外python还有一个更强大的字符串处理函数  str.format()

语法

它通过{}和:来代替%。
format输出控制是一种映射关系。

1、通过位置

print({0},{1}.format(kzc,18))
输出:‘kzc,18

print(‘{},{}.format(kzc,18)) 输出: kzc,18

print(‘{1},{0},{1}.format(kzc,18)) 输出:‘18,kzc,18

2、通过关键字

print({name},{age}.format(age=18,name=kzc)) 
输出:‘kzc,18

3、通过对象属性

class Person: 
  def __init__(self,name,age): 
    self.name,self.age = name,age 
    def __str__(self): 
      return This guy is {self.name},is {self.age} old.format(self=self) 

str(Person(‘kzc‘,18))

输出结果:‘This guy is kzc,is 18 old‘

4、通过下标

p=[kzc,18]
print(‘{0[0]},{0[1]}.format(p))


输出结果:‘kzc,18

有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。

print(my pet name is {student[0]}.format(student=stu_list))
my pet name is tom


print(my pet {d[tom]} years old.format(d=age_dict))
my pet 2 years old

 

格式限定符

它有着丰富的的“格式限定符”(语法是{}中带:号),比如:

填充与对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
比如

print({:>8}.format(189‘))
输出:    189print(‘{:0>8}.format(189‘))
输出: 00000189print(‘{:a>8}.format(189‘))
输出: aaaaa189

精度与类型f
精度常跟类型f一起使用

priint({:.2f}.format(321.33345))
输出: 321.33

其他类型
主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

print({:b}.format(17))
输出: 10001print(‘{:d}.format(17))
输出: 17print‘{:o}.format(17)
输出: 21print(‘{:x}.format(17))
输出: 11

用,号还能用来做金额的千位分隔符。

print({:,}.format(1234567890))
输出: 1,234,567,890

内容有一些做了修改,文章出处:http://www.jb51.net/article/108193.htm


















以上是关于Python格式化字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 格式(f-string)字符串中,!r 是啥意思? [复制]

python颜色压缩的结果颜色比保存颜色深

我应该如何使用 Outlook 发送代码片段?

Python代码阅读(第25篇):将多行字符串拆分成列表

如何在 Javadoc 中使用 @ 和 符号格式化代码片段?

为 Blogger 上的博客格式化代码片段 [关闭]