Python字符串格式化输出,在python编程中,是一个非常重要的知识点,掌握了它,你就可以输出各种格式要求的文本内容,并生成相关要求的文件。下面介绍Python格式化字符串的四种方式,并给出了比较详尽的参数说明和举例,希望能够帮助到大家,以下是详细的内容:
一、%号
这是最早的字符格式化方法。字符串格式化使用与 C语言 中 sprintf 函数一样的语法。如果您没有使用过C语言,也没有关系,看看下面的表格参数的描述和例子也就明白了。
基本语法是:字符串 % ()
python字符串格式化符号:
符 号
描述
%c
格式化字符及其ASCII码
%s
格式化字符串
%d
格式化整数
%u
格式化无符号整型
%o
格式化无符号八进制数
%x
格式化无符号十六进制数
%X
格式化无符号十六进制数(大写)
%f
格式化浮点数字,可指定小数点后的精度
%e
用科学计数法格式化浮点数
%E
作用同%e,用科学计数法格式化浮点数
%g
%f和%e的简写
%G
%f 和 %E 的简写
%p
用十六进制数格式化变量的地址
————————————————
格式化操作符辅助指令:
符号
功能
*
定义宽度或者小数点精度
-
用做左对齐
+
在正数前面显示加号( + )
<sp>
在正数前面显示空格
#
在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0
显示的数字前面填充'0'而不是默认的空格
%
'%%'输出一个单一的'%'
(var)
映射变量(字典参数)
m.n.
m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
注:默认是右对齐。
————————————————
1、按照顺序格式化字符串
当需格式化的字符串或者数字过多时,位置搞混估计有很大的可能。举例如下:
a = '张三'
b = '李四'
c = 3.1415926
print('%s和%s是兄弟!π=%5.2f' % (a, b , c)) # 张三和李四是兄弟!π= 3.14
print("%s和%s是兄弟!π=%5.2f" % ("张三", '李四', 3.14151926)) # 张三和李四是兄弟!π= 3.14
2、通过字典方式格式化字符串
通过字典方式格式化,打破了位置带来的限制与困扰。
如:%4d格式化数据,输出整数位4位,右对齐数字不足用空格代替。
print("我叫%(name)s,年龄%(age)4d岁" % {"name": '张三', "age": 20}) # 我叫张三, 年龄 20岁
kwargs = {"name": "张三", "age": 18}
print("我叫%(name)s, 年龄%(age)d岁" % kwargs) # 我叫张三, 年龄18岁
二、str.format 函数
format函数,它增强了字符串格式化的功能。str.format的格式化字符串的方式比%在性能和灵活性上要好很多。好处是format 函数可以接受不限个数的参数,而且位置可以不按顺序。
基本语法是通过 {} 和 : 来代替前面的 % 。
1、使用位置参数格式化
按照位置一一对应,这一点和%一样。
print("{}和{}是好朋友!".format('张三', '李四')) # 张三和李四是好朋友!
2、使用数字索引格式化
使用索引取对应位置的值,这是位置可以任意,按照需要排列。
print('{0}{0}{1}{0}'.format('张三', '李四')) # 张三张三李四张三
3、使用关键字参数格式化
通过关键字的方式格式化,打破了位置带来的限制与困扰。这一点也和%类似。
print("我叫{name}, 年龄{age}岁。".format(age=18, name="张三"))
4、使用字典格式化
通过字典方式的方式格式化,也能达到关键字参数的效果。
kwargs = {'name': '张三', "age": 18}
print("我叫{name}, 年龄{age}岁。".format(**kwargs)) # 使用**进行解包操作
注意:**kwargs,使用**进行解包操作,这点非常重要。新手容易不写**,而程序报错
5、字符格式化
先取到值(使用数字索引),然后在冒号后面设定填充格式:[填充字符][对齐方式][宽度]
^, <, > 分别是居中、左对齐、右对齐。后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
需要注意的是,每个汉字算一个字符。这一点和C语言不一样的,C语言中,一个汉字计算为2个字符。举例如下:
#*<20: 意思是: 左对齐,总共20个字符,不足部分用*号填充
print("我叫{0:*<20},年龄 {1:*<10}岁!".format("张三", 18)) # 我叫张三******************,年龄 18********岁!
# *>10: 右对齐,总共10个字符,不足部分用*填充
print("我叫{0:*<10}".format("张三")) # 我叫张三********
# *^18: 居中,总共18个字符,不足部分用*填充
print("我叫{0:*^18}".format("张三")) # 我叫********张三********
# ^20: 居中,总共20个字符,不足部分用空白填充
print("我叫{0:^20}".format("张三")) # 我叫 张三
————————————————