Python实现字符串格式化输出的方法详解


Posted in Python onSeptember 20, 2017

本文实例讲述了Python实现字符串格式化输出的方法。分享给大家供大家参考,具体如下:

python属于强类型的语言,如果像java一样操作字符串和数字的“+”时,会出现TypeError。而python的格式化方法有多种,比如使用占位符,使用format,或者是自定义模版等等。这里介绍了其中的几种方法

下面这个例子很好的说明了python属于强类型语言:

print "abc" + 123
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects

所以,需要进行转换输出。

常用占位符

符号 意思
%s 字符串
%d / %i 十进制整数
%u 过时的十进制使用方法
%o 八进制整数
%x / %X 十六进制整数
%f / %F 浮点数
%e / %E 科学技术法
%% 输出%

使用方式一

直接使用占位符

print '%s+%d' % ('abc', 123) #abc+123
print '%o' % 10 #12 八进制

为%d指定长度,%05d,如果数字小于5位会在左边补0,大于指定长度时不受此影响

print '%s+%05d' % ('abc', 123) #abc+00123
print '%03x' % 10 #00a
print '%.3e' % 123456789 #1.235e+08 保留3位小数的科学技术法

使用方式二

使用字典

print 'Python is %(args)s, %(args)s, %(args)s beautiful' % {'args': 'very'} #Python is very, very, very beautiful

当拼接有许多重复元素时,使用这种方式比较好

使用方式三

使用format的方式。在2.6之后的版本支持。

print '{0}{1}{2}{3}'.format('a', 'b', 'c', 123) #abc123
print '{}, {}, {}'.format('a', 'b', 'c') #abc 2.7+ only
print '{2}, {1}, {0}'.format('a', 'b', 'c') #c, b, a
print '{2}, {1}, {0}'.format(*'abc') #c, b, a
print '{0}{1}{0}'.format('abra', 'cad') #abracadabra

通过参数名字格式化

print 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W') #Coordinates: 37.24N, -115.81W
coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
print 'Coordinates: {latitude}, {longitude}'.format(**coord) #Coordinates: 37.24N, -115.81W

使用元组

coord = (3, 5)
print 'X: {0[0]}; Y: {0[1]}'.format(coord) #X: 3; Y: 5

进制

# format also supports binary numbers
"int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) #'int: 42; hex: 2a; oct: 52; bin: 101010'
3 
# with 0x, 0o, or 0b as prefix:
"int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) #'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'

为数字加点号

'{:,}'.format(1234567890) #'1,234,567,890'

百分比表示

'{:.2%}'.format(19.5 / 22) # '88.64%'

时间格式化

import datetime
today = datetime.datetime.today()
'{:%Y-%m-%d %H:%M:%S}'.format(d) #'2013-09-01 21:10:22'
'{:%Y-%m-%d}'.format(today) #'2013-09-01'

另外也可以使用strftime来格式化时间

使用方式四

自定义模版

from string import Template
s = Template('$sargs plus $aargs')
s.substitute(sargs = 'abc', aargs = 123) #'abc plus 123'

这里有substitue和safe_substitute两种属性

d = dict(sargs = 'abc')
# s.substitute(d)
# it's a KeyError
s.safe_substitute(d) #'abc plus $aargs'

如果不使用safe_substitute,参数不全时会出现KeyError异常。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中random模块用法实例分析
May 19 Python
Python中的深拷贝和浅拷贝详解
Jun 03 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
Python实现图片转字符画的示例代码
Aug 21 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
Apr 17 Python
详解Python发送email的三种方式
Oct 18 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
Django中提示消息messages的设置方式
Nov 15 Python
利用python实现凯撒密码加解密功能
Mar 31 Python
python小白学习包管理器pip安装
Jun 09 Python
解决python便携版无法直接运行py文件的问题
Sep 01 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
Sep 20 #Python
python select.select模块通信全过程解析
Sep 20 #Python
基于python的字节编译详解
Sep 20 #Python
MySQL适配器PyMySQL详解
Sep 20 #Python
Python字符串格式化的方法(两种)
Sep 19 #Python
python3 pillow生成简单验证码图片的示例
Sep 19 #Python
Python文件操作之合并文本文件内容示例代码
Sep 19 #Python
You might like
小偷PHP+Html+缓存
2006/11/25 PHP
如何离线执行php任务
2017/02/21 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
javascript按位非运算符的使用方法
2013/11/14 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JavaScript组合模式学习要点
2016/08/26 Javascript
JS 调用微信扫一扫功能
2016/12/22 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
关于layui的动态图标不显示的解决方法
2019/09/04 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
django如何连接已存在数据的数据库
2018/08/14 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Django数据库迁移常见使用方法
2020/11/12 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
音乐教学反思
2014/02/02 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
2014年租房协议书范本
2014/10/30 职场文书
工作试用期自我评价
2015/03/10 职场文书
雷锋的观后感
2015/06/10 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
一文读懂navicat for mysql基础知识
2021/05/31 MySQL