python的格式化输出(format,%)实例详解


Posted in Python onJune 01, 2018

皇城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了。

新特性

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

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

常用的format用法

通过位置

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

通过关键字

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

通过对象属性

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("Q1mi", 18)
In[3]: str(p)
Out[3]: 'This guy is Q1mi, 18 years old.'

通过下标

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

填充与对齐

填充常跟对齐一起使用

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

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

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'

精度与类型f

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

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

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

其他进制

主要就是进制了,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'

千位分隔符

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

总结

以上所述是小编给大家介绍的python的格式化输出(format,%)实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python self,cls,decorator的理解
Jul 13 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Python 操作MySQL详解及实例
Apr 30 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
对python多线程中Lock()与RLock()锁详解
Jan 11 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Django学习笔记之为Model添加Action
Apr 30 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
scrapy结合selenium解析动态页面的实现
Sep 28 Python
python爬取企查查企业信息之selenium自动模拟登录企查查
Apr 08 Python
Python图像处理库PIL详细使用说明
Apr 06 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 #Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 #Python
Python中if elif else及缩进的使用简述
May 31 #Python
python基于物品协同过滤算法实现代码
May 31 #Python
python写入并获取剪切板内容的实例
May 31 #Python
python3实现基于用户的协同过滤
May 31 #Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 #Python
You might like
PHP数据库开发知多少
2006/10/09 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
PHP return语句的另一个作用
2014/07/30 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
python服务器与android客户端socket通信实例
2014/11/12 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
创建Django项目图文实例详解
2019/06/06 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
让IE下支持Html5的placeholder属性的插件
2014/09/02 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
下列程序在32位linux或unix中的结果是什么
2014/03/25 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
地理科学专业自荐信
2014/09/01 职场文书
新员工考核评语
2014/12/31 职场文书
西柏坡导游词
2015/02/05 职场文书
护士医德考评自我评价
2015/03/03 职场文书
市直属机关2016年主题党日活动总结
2016/04/05 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript