Python中应该使用%还是format来格式化字符串


Posted in Python onSeptember 25, 2018

%还是format

1、皇城PK

Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢?

自从Python2.6引入了format这个格式化字符串的方法之后,我认为%还是format这根本就不算个问题。不信你往下看。

# 定义一个坐标值
c = (250, 250)
# 使用%来格式化
s1 = "敌人坐标:%s" % c

上面的代码很明显会抛出一个如下的TypeError:

TypeError: not all arguments converted during string formatting

像这类格式化的需求我们需要写成下面丑陋的格式才行:

# 定义一个坐标值
c = (250, 250)
# 使用%丑陋的格式化...
s1 = "敌人坐标:%s" % (c,)

而使用format就不会存在上面的问题:

# 定义一个坐标值
c = (250, 250)
# 使用format格式化
s2 = "敌人坐标:{}".format(c)

很显然,上面这一个理由就已经足够让你在以后的项目中使用format了。

2、新特性

在Python3.6中加入了f-strings:

In[1]: name = "djb"
In[2]: age = 18
In[3]: f"My name is {name}.I'm {age}"
Out[3]: "My name is djb.I'm 18"

常用的format用法

1、通过位置

In[1]: data = ["djb", 18]
In[2]: "Name:{0}, Age:{1}".format(*data)
Out[2]: 'Name:djb, Age:18'

2、通过关键字

In[1]: data = {"name": "djb", "age": 18}
In[2]: "Name:{name}, Age:{age}".format(**data)
Out[2]: 'Name:djb, Age:18'

3、通过对象属性

In[1]: class Person(object):
  ...:   def __init__(self, name, age):
  ...:     self.name = name
  ...:     self.age = age
  ...:   def __str__(self):   
  ...:     return "This guy is {self.name}, {self.age} years old.".format(self=self)
  ...:   
In[2]: p = Person("djb", 18)
In[3]: str(p)
Out[3]: 'This guy is djb, 18 years old.'

4、通过下标

In[1]: "{0[0]} is {0[1]} years old.".format(data)
Out[1]: 'djb is 18 years old.'

5、填充与对齐

填充常跟对齐一起使用

^、<、>分别是居中、左对齐、右对齐,后面带宽度

:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充。

In[1]: "{:>10}".format('18')
Out[1]: '    18'
In[2]: "{:0>10}".format('18')
Out[2]: '0000000018'
In[3]: "{:A>10}".format('18')
Out[3]: 'AAAAAAAA18

补充一个字符串自带的zfill()方法:

Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0。

zfill()方法语法:str.zfill(width)

参数width指定字符串的长度。原字符串右对齐,前面填充0。

返回指定长度的字符串。

In[1]: "18".zfill(10)
Out[1]: '0000000018'

6、精度与类型f

精度常跟类型f一起使用。

In[1]: "{:.2f}".format(3.1415926)
Out[1]: '3.14'

其中.2表示长度为2的精度,f表示float类型。

7、其他进制

主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。

In[1]: "{:b}".format(18)
Out[1]: '10010'
In[2]: "{:d}".format(18)
Out[2]: '18'
In[3]: "{:o}".format(18)
Out[3]: '22'
In[4]: "{:x}".format(18)
Out[4]: '12'

8、千位分隔符

In[1]: "{:,}".format(1234567890)
Out[1]: '1,234,567,890'

最后,总结一下,这样对比下来选用format比%是更好的,但是每个人有每个人不同的用法,在此只是列举出format对比%的一些优势。

总结

以上所述是小编给大家介绍的Python中应该使用%还是format来格式化字符串,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python松散正则表达式用法分析
Apr 29 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
Python使用zip合并相邻列表项的方法示例
Mar 17 Python
python中reader的next用法
Jul 24 Python
win7下python3.6安装配置方法图文教程
Jul 31 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python操作toml文件的示例代码
Nov 27 Python
Django如何自定义分页
Sep 25 #Python
Python使用googletrans报错的解决方法
Sep 25 #Python
Python实现简单的用户交互方法详解
Sep 25 #Python
Python中反射和描述器总结
Sep 23 #Python
python3实现爬取淘宝美食代码分享
Sep 23 #Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 #Python
Python实现注册、登录小程序功能
Sep 21 #Python
You might like
php递归创建目录的方法
2015/02/02 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
python连接数据库的方法
2017/10/19 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python构建指数平滑预测模型示例
2019/11/21 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
Delphi笔试题
2016/11/14 面试题
会计助理的岗位职责
2013/11/29 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
社区食品安全实施方案
2014/03/28 职场文书
初一新生军训方案
2014/05/22 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
工作能力自我评价2015
2015/03/05 职场文书
出国留学英文自荐信
2015/03/25 职场文书
心理健康教育主题班会
2015/08/13 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python