Python 字符串格式化使用 “字符 %格式1 %格式2 字符” % (变量1, 变量2),%格式表示接受变量的类型。简单的使用例子如下:
# 例:字符串格式化
Name = ‘Chaishiwei’
print ‘www.%s.com’ % Name
>> www.Chaishiwei.com # 输出结果Name = ‘Chaishiwei’
Zone = ‘com’
print ‘www.%s.%s’ % (Name, Zone)
>> www.Chaishiwei.com # 输出结果
在Python中格式化输出字符串使用的是%运算符,通用的形式为
格式标记字符串 % 要输出的值组
其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的’值组’如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。重点来看左边的部分。左边部分的最简单形式为:
%cdoe
其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用’%s‘来标记。比如:
‘%s %s %s’ % (1, 2.3, [‘one’, ‘two’, ‘three’])
它的输出为’1 2.3 [‘one’, ‘two’, ‘three’]’,就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:
整型数:%d
无符号整型数:%u
八进制:%o
十六进制:%x %X
浮点数:%f
科学记数法: %e %E
根据数值的不同自动选择 %e 或 %f: %g
根据数值的不同自动选择 %E 或 %f: %G
这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用 %% 来表示。
格式符号为数字时前面可以加为数和补缺位如:%[0][总位数][.][小数位数] 来设定要转换的样式,具体使用方法如下:
# 例:数字格式化
nYear = 2013
nMonth = 3
nDay = 24
# 格式化日期 %02d 数字转成两位整型缺位填0
print ‘%04d-%02d-%02d’ % (nYear, nMonth, nDay)
>> 2018-08-18 # 输出结果fValue = 8.123
print “%06.2f %” fValue # 保留宽度为6的2位小数浮点型
>> 008.12print “%d” % 10 # 输出十进制
>> 10print “%o” % 10 # 输出八进制
>> 12print “%02x” % 10 # 输出两位十六进制,字母小写空缺补零
>> 0aprint “%04X” % 10 # 输出四位十六进制,字母大写空缺补零
>> 000Aprint “%.2e” % 1.2888 # 以科学计数法输出浮点型保留2位小数
>> 1.29e+00
Table 3.1. 字符串格式化代码
格式 描述
%% # 百分号标记
%c # 字符及其ASCII码
%s # 字符串
%d # 有符号整数(十进制)
%u # 无符号整数(十进制)
%o # 无符号整数(八进制)
%x # 无符号整数(十六进制)
%X # 无符号整数(十六进制大写字符)
%e # 浮点数字(科学计数法)
%E # 浮点数字(科学计数法,用E代替e)
%f # 浮点数字(用小数点符号)
%g # 浮点数字(根据值的大小采用%e或%f)
%G # 浮点数字(类似于%g)
%p # 指针(用十六进制打印值的内存地址)
%n # 存储输出字符的数量放进参数列表的下一个变量中