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.nsm表示所占字符宽度,
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
\tTABprint(‘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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值