string format格式化_Python3种格式化字符串方法

前言

使用Python的伙伴们,经常会用到print输出日志进行调试,那么如何格式化输出字符串?今天跟大家继续分享关于Python的小知识。

cdcca0d1537771c1fdecede31ee22e4c.png

说明

我们经常会用到%-formattingstr.format()来格式化,而在Python 3.6版本开始,增加了f-strings语法,下面我将详细的介绍这三种方式。

1. %-formatting格式化字符串

  • 最早的格式化是用%(百分号), 它这么用:
In : name = 'World'In : id = '10'In : 'Hello %s,id=%s' %(name,id)Out: 'Hello World,id=10'

这里用的%s表示格式化成字符串,另外常用的是%d(十进制整数)、%f(浮点数)。

  • 另外也支持使用字典的形式:
In : 'Hello[%(name)s],id=%(name)s' % {'id': 10, 'name': 'World'}Hello[World],id=10

2. str.format()格式化字符串

  • 常规用法
In : name = 'World'In : 'Hello {}' %(name)Out: 'Hello World'
  • 通过位置访问:
In : '{2}, {1}, {0}'.format('a', 'b', 'c')Out: 'c, b, a'
  • 通过关键字访问:
In : 'Hello {name}'.format(name='testerzhang')Out: 'Hello testerzhang'

从这里我们可以看出,第二种优于第一种方式:


1. 不需要理会数据类型。


2. 单个参数可以多次输出,参数顺序可以不同。


3. 填充方式十分灵活,对齐方式异常强大。


4. 官方推荐用的方式,%方式在后面的版本终将会被淘汰。

3. f-string格式化字符串(推荐)

Python3.6 版本开始出现了此新的格式化字符串,性能又优于前面两种方式。

d11d2c0b70942041f6f8ec00eccd9ebc.png
In : name = "testerzhang"In : print(f'Hello {name}.')In : print(f'Hello {name.upper()}.')Out: Hello testerzhang.Out: Hello TESTERZHANG.
In : d = {'id': 1, 'name': 'testerzhang'}In : print(f'User[{d["id"]}]: {d["name"]}')Out: User[1]: testerzhang

从这里我们可以看出,第三种优于第二种方式:

1. 第二种方式的变量不易阅读,而第三种更加直观。

2. 解决str.format() 接变量后变超长的问题。

f-string格式化字符串是否可以用于低版本的Python3?

如果低于Python3.6,可以通过pip install future-fstrings即可,在相应的py脚本文件里不需要加import这个库,但是需要头部加上# coding: future_fstrings。

但是我还是建议升级到Python3.7版本,因为最新版本解决了一些BUG。

结束语

Python2.X版本现在也不会在支持,现在也开始转向Python3.X版本,强烈推荐第三种方式进行格式化字符串。

你们用的是哪种方式?可以进行评论。


喜欢本文的童鞋,可以关注我+收藏,不明白的地方也可以评论留言。

f3702dbd2f1233ddde88b1614f7e961f.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值