五、Python字符串的格式化输出
1、什么是格式化输出
数据按照某种特殊的要求输出,假如字符串中有各种格式的数据,要拼接输出:
如果输入一个整数,希望整数按照十六进制,八进制输出。
如果输入一个小数,希望小数保留后面2位数然后输出。
以科学计数法的方式来输出小数。
字符串的输出希望在十个格子内输出,或者左对齐,居中等等
即所谓的格式化输出就是需要按照一定的格式输出内容。
2、Python格式化输出的五种方式
Python的字符串变量有五种输出方式,下面我们分类来介绍一下。
方式1:字符串之间用+号拼接
# 字符串之间也可以进行加法运算
# 如果将两个字符串进行相加,则会自动将两个字符串拼接为一个字符串
a = 'abc' + 'haha' + '哈哈'
print("a = "+ a) # a = abchaha哈哈
# 字符串只能和字符串之间用+号进行拼接,
# 不能和其他的类型进行加法运算,如数值型变量。
# 如果做了会出现异常 TypeError: must be str, not int
a = 123
print("a = "+a) # 报错
# 这种写法在Python中不常见
方式2:print()函数可同时输出多个字符串
# print()函数可同时输出多个字符串
print("hello","ptyhon") # hello ptyhon
# 这种写法无论a是什么类型变量,
# 都能进行拼接字符串输出了。
a = 123
print('a =',a) # a = 123
b = 18
print("我今年",b,"岁") # 我今年 18 岁
# 注意:这种输出方式拼接的字符串,拼接的位置会有空格。
# 这种方式在实际开发中也不常用。
方式3:占位符方式
表示在创建字符串时,可以在字符串中指定占位符。
常用格式化符号
格式符号
转换
%s(常用)
字符串
%d(常用)
有符号的十进制整数
%f(常用)
浮点数
%c
字符
%u
无符号十进制整数
%o
八进制整数
%x
十六进制整数(小写ox)
%X
十六进制整数(大写OX)
%e
科学计数法(小写'e')
%E
科学计数法(大写'E')
%g
%f和%e的简写
%G
%f和%E的简写
我们常用的格式化符号是前三个,剩下的不用去死记硬背,以后用到的时候可以来笔记中查询即可。
示例:
"""
占位符格式化输出分为两个步骤
1. 准备数据(定义输出变量)
2. 格式化符号输出数据(执行输出)
"""
# 1. 今年我的年龄是x岁 -- 整数 %d
# 结果:今年我的年龄是18岁
age = 18
print('今年我的年龄是%d岁' % age)
#如果占位符没有添加内容,则原样输出占位符。
#结果:今年我的年龄是%d岁
print('今年我的年龄是%d岁')
# 2. 我的名字是x -- 字符串 %s
# 结果:我的名字是TOM
name = 'TOM'
print('我的名字是%s' % name)
# 3. 我的体重是x公斤 -- 浮点数 %f
# 结果:我的体重是75.500000公斤
weight = 75.5
print('我的体重是%f公斤' % weight)
# 说明%f默认显示小数点后6位
# %.xf,表示小数点后显示的小数位数。
# 结果:我的体重是75.50公斤
print('我的体重是%.2f公斤' % weight)
# 4. 我的学号是x -- %d
# 结果:我的学号是1
stu_id = 1
print('我的学号是%d' % stu_id)
# %03d,表示输出的整数显示位数,不足以0补全,超出当前位数则原样输出
stu_id2 = 1000
print('我的学号是%03d' % stu_id) # 001
print('我的学号是%03d' % stu_id2) # 1000
# 5. 我的名字是x,今年x岁了
# 把前边的占位符,按顺序在()小括号内进行赋值,用逗号分隔。
# 结果:我的名字是TOM,今年18岁了
print('我的名字是%s,今年%d岁了' % (name, age))
# 我的名字是x,明年x岁了
# 结果:我的名字是TOM,今年19岁了
print('我的名字是%s,明年%d岁了' % (name, age + 1))
# 说明在给占位符赋值的时候是可以进行运算的。
拓展示例
# 6. 我的名字是x,今年x岁了,体重x公斤
# 结果:我的名字是TOM,今年18岁了,体重75.50公斤
name = 'TOM'
age = 18
weight = 75.5
print('我的名字是%s,今年%d岁了,体重%.2f公斤,学号是%06d' % (name, age, weight))
# 拓展
# 因为最终结果是以字符串输出完整句子
# 那字符串中所有的数据都可以用字符串进行占位输出
# 我的名字是x,今年x岁了,体重x公斤
# 结果:我的名字是TOM,今年18岁了,体重75.5公斤
print('我的名字是%s,今年%s岁了,体重%s公斤' % (name, age, weight))
# 总结:如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。
# 7、%d占位符,如果传入的是小数,只保留整数部分
print('hello %d' % 123.95) # hello 123
# 8、%3.5s字符串的长度限制在3-5之间,多了截取,少了补空格
print('hello %3.5s' % 'abcdefg') # hello abcde
print('hello%3.5s' % 'abc') # helloabc
print('hello%3.5s' % 'ab') # hello ab
# 9、左对齐、右对齐
# 右对齐,取20位,不够则空格补位
print('%20s' % 'hello python')
# 左对齐,取20位,不够则空格补位
print('%-20s' % 'hello python')
# 上面两句代码执行结果如下
hello python
hello python