Python格式化字符串由两种方式可以选择:一种是格式化表达式(Formatting Expression),一种是格式化方法(Formatting Method)。其中格式化表达式在全Python版本支持,而格式化方法在Python 2.6, Python 2.7和Python 3.1开始支持。

格式化表达式与格式化方法的通用形式如下:

'...%s...' %(values) #格式化表达式

'...{}...'.format(values) #格式化方法

格式化表达式

格式化表达式的完整形式如下([ ]表示可选):

'%[(keyname)[flags][width][.precision]typecode' %(values)

keyname

Python格式化字表达式支持使用keyname到values中的dictionary里面取对应的值:

>>>'%(qty)d and %(food)s' %{'qty':1, 'food': 'spam'}1 and spam

flags

类似C语言的printf打印时使用的标志位,比如是否用0填充,是否显示数字的正负号

width和precision

width表示整个文本的宽度,precision表示小数位数。如果precision < width,不必补0满足width,;如果precision > width,优先precision。width和precision都支持*,如果是这样的话,它们对应的值由values当中的下一项来确定:

>>>'%s and %*.*f' %('abc', 3, 5, 6.333333333) #width = 3, presion = 5,优先precision

'abc and 6.33333'

>>>'%s and %*.*f' %('abc', 5, 3, 6.333333333) #width = 5, presion = 3,不必补0满足width

'abc and 6.333'

typecode

类似C语言printf打印时使用的typecode,比如s表示字符串,d表示整数等等

格式化方法

格式化方法的格式化字符串比较丰富,完整形式如下:

'{fieldname component !conversionflag:formatspec}'.format(values)#其中formatspec的完整形式如下,[ ]表示可选

[[fill]align][sign][#][0][width][,][.precision][typecode]

fieldname

一个数字或者keywor参数名,数字用来标识从values中的第几个参数获取值,keyword参数形如name=value;如果不提供,就使用相对位置:

>>>'{0} and {1}'.format(0, 1)'0 and 1'

>>>'{a} and {b}'.format(a=0, b=1)'0 and 1'

>>>'{a} and {b}.format({'a':0,'b':1}) # 报错

KeyError:'a'

>>>'{} and {}'.format(0, 1) #不提供使用相对位置,不可以有的指定,有的不指定,会报错,相对位置在Python2.7和Python3.1中开始支持

'0 and 1'

component

使用.name或者[index/key]的形式,对于从values中匹配的项,进一步根据.name取属性(如果是对象),或者根据index/key取值(如果这个匹配项是数组/字典):

#.platform是sys的一个属性#[a]是values中字典的一个key#[2]是values中数组的index

>>>'{0.platform} and {1[a]} and {2[2]}'.format(sys, {'a': 1}, [0, 1, 2, 3])'linux and 1 and 2'

conversionflag

conversionflag可以是r,s,或者是a,表示调用repr,str和ascii内置函数对匹配项进行转换

fill和align

fill可以是任何字符,除了'{'和'}',表示对齐时使用的填充字符;

align可以是,=,^,分别表示左对齐,右对齐,在数值符号后使用fill,居中对齐;

>>>'{:$<10}'.format(100) #左对齐,7个$

'$$$$$$$100'

>>>'{:$=+10}'.format(100) #在符号后填充,6个$

'+$$$$$$100'

sign

表示数值符号,可以是+,-或者空格:

>>>'{: }'.format(100) #输出的100后面有空格

'100'

>>>'{: }'.format(-100) #输出100的空格被-占用

'-100'

#

表示显示八进制或者十六进制的前导标志0或者0x:

>>>'{:#0}'.format(100) #八进制表示

'00144'

>>>'{:#x}'.format(100) #十六进制表示

'0x64'

,(逗号,Python2.7和Python3.1开始有)

逗号表示1000分隔符:

>>>'{:,}'.format(10000)'10,000'

width和precision

width和precision的意思和格式化表达式中的一样,如果formatspec中包含嵌套的{},那么就和格式化标示符中使用*是一样的功能:

>>>'{0:{1}.{2}}'.format(6.333333, 5, 3) #前面有两个空格

'6.33'

typecode

和格式化表达式typecode是必选的不一样,格式化方法中的typecode是可选的,如果不指定,表示可以接受任何类型,但是如果一旦指定,就必须和values中的匹配项类型一致,但是也有例外,看下面例子:

>>>'{:s}'.format(6.33) #报错,不像格式化表达式一样,会自动转换为字符串

ValueError:Unknown format code 's' for object of type 'float'

>>>'{:i}'format(6.33) #报错,float无法转换成整型

VlaueError:Unknown format code 'i' for object of type 'float'

>>>'{:f}'.format(6) #可以整型转换成float没问题

'6.000000'

format方法

除了使用格式化表达式和格式化方法之外,Python 2.6和Python 3.0还支持format方法进行格式化:

>>>format(6.333, '.2f')'6.33'

Template方法

string模块的Template方法也可以格式化字符串:

>>>importstring>>>t = string.Template('$num = $title') #要替换的字段以$开头

>>>t.substitue({'num': 7, 'title':'Strings'}) #支持字典做参数

'7 = Strings'

>>>t.sustitute(num = 7, title = 'Strings') #支持keyword做参数

'7 = Strings'

python整数格式化表达式_Python字符串格式化表达式和格式化方法相关推荐

  1. python关键字中文意思_python 字符串只保留汉字的方法

    如下所示: def is_chinese(uchar): """判断一个unicode是否是汉字""" if uchar >= u'\ ...

  2. python加密与解密_Python字符串加密与解密的方法总结

    python对字符串做加密解密处理,大致有三种方法:base64,win32com.client和自定义加密解密算法,最安全可靠的方式,建议是自写加密解密算法. 1,使用base64: 代码示例: # ...

  3. python中字符串查找子串_Python字符串中查找子串的方法

    Python字符串中查找子串的方法 发布于 2015-04-12 08:58:32 | 230 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对象.解释型计 ...

  4. python format函数实例_Python字符串格式化,format格式化函数详细使用

    Python接触比较多的是字符串,那么操作字符串也就多.Python 支持格式化字符串的输出 . 尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符的字符串中. 代码 ...

  5. python字符数组输出_python字符串格式化输出

    字符串格式化输出 : 字符串的拼接第一种方式 如:name = input("name:") age = input("age:") job = input(& ...

  6. python123格式化输出_python 字符串格式化输出 %d,%s及 format函数

    旧式格式化方式:%s,%d 1.顺序填入格式化内容 s = "hello %s, hello %d"%("world", 100) print(s) 结果: ' ...

  7. python如何输出整数逆序_python字符串类型及操作

    字符串索引&切片用法 Str[]对字符串进行索引,括号内为获取第几个元素 使用[M:N:K]根据步长对字符串切片 <字符串>[M:N]是可以缺失的,M缺失表示至开头,N缺失表示至结 ...

  8. python lambda表达式_Python中lambda表达式

    Python中lambda表达式 1.lambda的应⽤用场景 如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化. 2. lambda语法 lambda 参数列列表 : 表达式 ...

  9. python定界符有哪些_Python字符串

    第二讲 list 列表 一.列表的基本介绍 什么是列表? 列表由一系列按特定顺序排列的元素组成,使用[]作为定界符,用逗号作为元素分隔符. List的特点 有序可变,可以是任意类型数据. 列表的数据结 ...

  10. 写出python字符串三种常用的函数或方法_Python字符串的使用和相关函数方法

    1.创建字符串很简单,只要为变量分配一个值即可.例如:var1 = 'Hello World!' var2 = "Python Good" 2.python 访问字符串中的值. P ...

最新文章

  1. TensorFlow tfjs 0.10.3 发布
  2. 监控摄像机 我们要享受飞行的乐趣
  3. [code]代码格式1
  4. 分布式TCP压力测试工具 tcpcopy
  5. 【最详细】数据结构(C语言版 第2版)第六章课后习题答案 严蔚敏 等 编著
  6. miui通知栏要点两下_「MIUI玩机技巧84」MIUI12状态栏如何切旧版控制中心
  7. Dockerfile构建MySQL
  8. php100 代码,php_100 PHP源代码 - 下载 - 搜珍网
  9. 从零开始学习springBoot(Contextpath+修改默认idk)
  10. 031、jvm实战总结:动手实验:线上系统部署如果采用G1垃圾回收器,应该如何设置参数?
  11. python 标准库 —— 线程与同步(threading、multiprocessing)
  12. 黑马程序员——面向对象篇之封装
  13. 浅谈FFT、NTT和MTT
  14. JCreator中不能引入servlet包的解决办法
  15. wsdl文件怎么看服务器地址,wsdl文件 服务器地址
  16. excel文件转换成PDF格式
  17. Pandas数据分析第2部分
  18. 快收藏ReactOS 新手指南
  19. 关于日记账导入-外币
  20. java 浏览器设置字体大小_Sass可以在不使用REM的情况下访问浏览器的默认字体大小吗?...

热门文章

  1. python-函数的嵌套调用
  2. python-while循环-完成一个简单三角形
  3. python-第一个python程序-向世界问好
  4. godaddy最新域名优惠码永久有效
  5. 创建一个国家的下拉菜单(magento2)
  6. 【剑指offer】二叉搜索树转双向链表,C++实现
  7. 强化顶层设计 巩固网络安全
  8. IDEA远程调试Tomcat
  9. Request 部分功能
  10. 老男孩教育每日一题-2017-04-25:怎样产生一个子shell?