python怎么输出文字_Python中的格式化输出字符串

格式化输出字符串的用处是,你有一个字符模板,然后不同的场景下替换掉模板的不同部分(比如人名)来输出字符。Python有两种方法可以用来格式化字符串(formatting string),一种是C语言的语法,即用%来格式化,另一种是format函数,下面我们来介绍这两种方法。

C-style formatting: %

使用%的语法形式是

"%dxxx%sxxx ..." % (var1, var2, ...)

var1和var2会被用来替换前面的%d %s。下面我们来解释他们各自是什么意思。我们先从最简单的一个例子看起

name = "Jack"

print("Hello,%s" % name) # ==> Hello, Jack

在上面这个例子中name的值会用来替换前一个字符串中的%s,%s被称作占位符,也就是会被替换掉的部分,它们都是以%开头,后面接上s d f等字母,比如%s %d %f %x等等。不同的占位符有不同的含义,这些含义基本上继承了C语言:%s表示替换的是个字符串(String)

%d表示替换的是个整数(Integer)

%f表示替换的浮点数(Float)

%x和%X表示替换的是整数的16进制表示,分别是小写和大写

下面我们看一个更复杂的例子

name = "Jack"

age = 18

height = 175.5

print("%sis%dyears old, with a height of%f" % (name, age, height))

# ==> Jack is 18 years old, with a height of 175.500000

这里有两点需要注意:一个是当需要替换的占位符多于一个的时候,替换值要用括号括起来形成一个tuple。第二个是这里的浮点数输出结果是175.500000而不是175.5,这是因为默认有一个浮点数的显示长度,你可以用下面的语法控制长度:比如%.2f表示保留两位小数。

print("%sis%dyears old, with a height of%.2f" % (name, age, height))

# ==> Jack is 18 years old, with a height of 175.50

format函数

除了C-style的%之外,Python引进了自己的格式化函数format,它的基本语法如下

"Hello, {}".format("world") # ==> "Hello, world"

{}替代了%成为了新的占位符标识,替换的时候也不再使用%而是使用format函数,替换的值作为函数的参数。新的format的好处在我看来有三点More pythonic,看起来更像是Python的代码,更美观一点。{}对新人来说没有%那么吓人

更简洁,{}可以不用像%s %d那样指定替换类型,format函数会自动识别

新的语法提供了更强大的功能,让你能从更细节的地方控制字符串的输出

我们用format函数来复现一下上面的例子

print("{} is {} years old, with a height of {}".format(name, age, height))

# ==> Jack is 18 years old, with a height of 175.5

可以注意到一点,format默认输出的浮点数的长度跟%是不一样的,不会输出多余的位数。那么如何像%那样控制输出结果呢?如下

print("{} is {} years old, with a height of {:.2f}".format(name, age, height))

# ==> Jack is 18 years old, with a height of 175.50

为了保留两位小数,我们在{}中加入了:.2f,:是必须的,用来表示后面的部分用来控制输出歌是,.2f的意思与%相同。

format中参数的顺序

format与%最为不同的一点在于,%要求替换的时候必须按照替换值出现的顺序来,而format则可以乱序替换,看下面的例子

print("{1} is {0} years old.".format(18, "Jack"))

# ==> Jack is 18 years old.

这里我们在{}中写上了数字,就代表用第几个参数替换当前的{},注意,顺序是从0开始数的。而且,format不要求每个替换值都被使用,也不要求每个替换值智能使用一次,比如

print("{1}'s name is {1}".format(18, "Jack"))

# ==> Jack's name is Jack

当我们想要同时控制替换顺序和格式化输出的时候我们就需要:了,如下

print("{2} is {0} years old, with a height of {1:.2f}".format(18, 175.5, "Jack"))

# ==> Jack is 18 years old, with a height of 175.50

注意第三个替换符{1:.2f},:前的1表示用第一个替换值,后面的.2f表示保留两位小数。相比之下,format是不是比%更加灵活而且更加容易阅读了呢?

以上便是本文的内容,谢谢阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值