Python格式化输出
格式化输出
- 数据按照某种特定的格式输出。
- 格式输出的常用方法有%占位符法, f-String格式化, format格式化。
%格式化输出
- 需要格式化输出的地方用%代替,%开头的只是⼀个转换说明符,只是⼀个占位符,它会被后面表达式(变量、常量、数字、字符串等各种形式)的值代替。
- 如有多个变量,后面用 % ()表示
字符串格式代码
- 注意有些地方显示不正常,空格无法显示
符号 | 描述 | 举例 |
---|---|---|
%s | 字符串格式化 | print(“My name is %s” % “June”) => My name is June |
%d | 整数格式化,%md表示一共占多少位 | age =18; print(“I am %d years old” % age) => I am 18 years old |
%f | 浮点数格式化 | print(“the weight is %f kg” % 3.4) => the weight is 3.400000 kg |
%o | 八进制整数输出 | print(“The number is %o” % 10) => The number is 12 |
%x | 十六进制整数输出 | print(“The number is %x” % 10) => The number is a |
%e | 科学计数法表示 | print(“The number is %.2e” % 31425)=> The number is 3.14e+04 |
%c | 将ascii码转化为字符输出 | print(“ascii code of %c is %d” % (97, 97)) => ascii code of a is 97 |
%-… | 左对齐,无符号默认右对齐 | print(“I am %-8d years old” % 13) => I am 13 years old |
%-m.n浮点型 | m表示所占字符宽度,n表示小数位数, 无符号-时,表示默认向右对齐 | print(“the weight is %-8.3f kg” % 3.4) => the weight is 3.400 kg |
%-m.nd | 一共占m个字符宽度,n位整数输出,不够前面补0, 无符号-时,表示默认向右对齐 | age =18; print(“I am %-8.3d years old” % age) => I am 018 years old |
%ms | 一共占m个字符宽度 | print(“My name is %10s” % “June”) => My name is June |
%m.ns | m表示所占字符宽度, n表示从左截取几个字符 | print(“%5.2s” % “Are you ready”) => Ar |
常用转义符
符号 | 描述 | 举例 |
---|---|---|
\ | 续行符 | 用在一行的末尾和下一行续接\ 3+\ 2 |
\\ | 反斜杠\ | print(“C:\\file”) => C:\file |
’ | 单引号’ | print('I\‘d like’) => I’d like |
\" | 双引号" | |
\n | 换行 | |
\r | 回到当前行的最左边 | print(‘wonde\rrful’) => rful |
\t | TAB | print(‘wonderful\t!’) => wonderful ! |
\b | 退格 | print(‘wonderful\b!’) => wonderfu! |
\oyy | 八进制数yy对应的ASCII字符 | |
\xyy | 十六进制数yy对应的ASCII字符 |
str.format格式化输出
- str.format把格式化输出的地方用{}来代替,:后可以添加对齐和填充格式。
- format 函数可以接受无限个参数。
- 分为位置映射和关键字映射。
- 可以提供详细的格式化指令。
format或者f string格式化输出
符号 | 描述 |
---|---|
‘b’ | 二进制 |
‘c’ | 字符在打印之前将整数转换成对应的Unicode字符串 |
‘d’ | 十进制整数将数字以10为基数进行输出 |
‘o’ | 八进制将数字以8为基数进行输出 |
‘x’ | 十六进制,将数字以16为基数进行输出,9以上的位数用小写字母 |
‘e’ | 幂符号用科学计数法打印数字。用’e’表示幂 |
‘g’ | 一般格式 将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印 |
‘n’ | 数字当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符 |
‘%’ | 百分数将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号 |
位置映射
- {}不设置指定位置,按默认先后顺序。
- {}指定数字编号,可通过调换数字改变。
"{} {}".format("hello", "world") # 不设置指定位置,按默认先后顺序
result:
'hello world'
"{1} {0} {1}".format("hello", "world") # 设置指定位置
result:
'world hello world' # 0对应hello,1对应world
- 通过列表索引设置参数
-当format()括号内是列表/元组名时,则前面指定0[idx]则表示一维列表/元组名的第几个元素- 列表和元组也可以是二维的。
-当format()括号内是*列表/元组名时,将其解包,则为单独的一个个元素。
- 列表和元组也可以是二维的。
list1= ['百度', 'www.baidu.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(list1)) # "0" 是必须的
result:
网站名:百度, 地址 www.baidu.com
list1= ['百度', 'www.baidu.com']
print("网站名:{}, 地址 {}".format(*list1))
result:
网站名:百度, 地址 www.baidu.com
关键字映射
- {}指定变量名,format函数中指定变量值,通过相同变量名取值。
print("名称:{name},地址:{address}".format(name="maya",address="beijing"))
result:
名称:maya,地址:beijing
- 通过字典设置参数
site = {"name": "June", "age": 18}
print("名字:{name}, 年龄: {age}".format(**site))
result:
名字:June, 年龄: 18
format对齐和填充
- ^、<、>分别是居中、左对齐、右对齐,而不是使用%中的符号-。
- {1[索引号]:*等[填充的符号] ^><[对齐符合] 数字[宽度]} 。
- 可以省略部分内容,但是不能是填充符号紧接宽度的形式。
- 在宽度中,可以使用和%格式化中对应的m.n(d/f/s)形式。
tuple1=("Words", "Action")
print("{1:*<10s} speak louder than {0:$>20s}.".format(*tuple1))
# {1:*<10s}:元组中的第1个元素,填充*,左对齐,右侧填充*,一共占10个字符宽度
# {0:$>20s}:元组中的第0个元素,填充$,右对齐,左侧填充$,一共占20个字符宽度
result:
Action**** speak louder than $$$$$$$$$$$$$$$Words.
f string格式化输出
- f""格式化输出,只需要在字符串前加f或F,替换的内容中使用{变量名}表示即可。
name = "June"
age = 18
print(f"My name is {name:$^10s}, I am {age:*<10d}")
result:
My name is $$$June$$$, I am 18********
list1=[18, "June"]
print(f"My name is {list1[1]:10s}, I am {list1[0]:10d}")
result:
My name is June , I am 18
f string其它
- 以f开头f" {} "表示在字符串内支持大括号内的python表达式
print(f"3+5={3+5}") #{3+5}是一个表达式
result:
3+5=8
def add(a, b):
return a + b
print(f"sum is {add(2,3)}")
result:
sum is 5