字符串格式化是拼接字符串的一种手段

join和+拼接字符串的方法,难以控制格式

printf style 字符串格式化

这种方法是从c语言继承过来的

# 待格式化的字符串:一个字符串存在占位符
In [1]: s='i love %s'# 传入的参数顺序地替换占位符,并返回替换之后的字符串,但原串不变
In [2]: s % ('python',)
Out[2]: 'i love python'
In [3]: s
Out[3]: 'i love %s'# 传入的参数和占位符个数不匹配、或传入的参数和类型不匹配,则抛出TypeError
In [4]: 'i love %s,i am %d' % ('python',22)
Out[4]: 'i love python,i am 22'In [5]: 'i love %s,i am %d' % ('python',)
TypeError: not enough arguments for format stringIn [6]: 'i love %s,i am %d' % ('python','sfc')
TypeError: %d format: a number is required, not strIn [11]: print('%s %%d' % 'python')
python %d

format

# 使用大括号作为占位符,调用format时其传入的参数会替换大括号
In [3]: s='i love {},i am {}';s.format('python',18)
Out[3]: 'i love python,i am 18'# 可以在占位符中加数字来指定传入哪个参数,并且该位置参数可以多次使用
In [4]: s='i love {1},i am {0}';s.format(18,'python')
Out[4]: 'i love python,i am 18'In [5]: s='i love {1},i am {1}';s.format(18,'python')
Out[5]: 'i love python,i am python'In [19]: '{0},{1},{2}'.format(*'abc')
Out[19]: 'a,b,c'# 可以在占位符中加标识符来指定关键字参数,并且关键字参数和位置参数可以同时使用
In [7]: s='my name is {0},i love {lang},i am {age}';s.format('jelly',lang='python',age=18)
Out[7]: 'my name is jelly,i love python,i am 18'# 什么时候会抛出异常?
# {}       是按照顺序来使用位置参数,那么当占位符和参数个数不匹配则抛出异常
# {数字i}   会把传入的参数当成一个列表args,使用位置参数i索引(args[i])。当i不是args的索引时抛出IndexError。
# {关键字k} 会把关键字参数当成一个字典kwargs,使用kwargs[k]。当k不是kwargs的key时,会抛出KeyError异常。

In [10]: '{} {}'.format(88)
------------------------------------------------------
IndexError           Traceback (most recent call last)
<ipython-input-10-569fb0faf265> in <module>()
----> 1 '{} {}'.format(88)IndexError: tuple index out of rangeIn [11]: '{} {lang}'.format(88)
------------------------------------------------------
KeyError             Traceback (most recent call last)
<ipython-input-11-8286ca2a6881> in <module>()
----> 1 '{} {lang}'.format(88)KeyError: 'lang'In [12]: '{1},{2},{3}'.format('a','b','c')
#分析:args=[a,b,c],args[i=1]='b',args[i=2]='c',args[i=3]=?故抛出IndexError
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-5-bedd884b41e7> in <module>()
----> 1 '{1},{2},{3}'.format('a','b','c')IndexError: tuple index out of range

转载于:https://www.cnblogs.com/snsdzjlz320/p/6572515.html

[PY3]——内置数据结构(4)——字符串格式化(format)相关推荐

  1. [PY3]——内置数据结构(3)——字符串及其常用操作

    字符串及其常用操作xmind图 字符串的定义 1. 单引号/双引号 In [1]: s1='hello world' In [2]: s1="hello world" 2. 三对单 ...

  2. python 内置方法赋值_Python内置数据结构之字符串str

    1. 数据结构回顾 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于字符串,但是字符串是不可变序列,因此所有的元素赋值和切片赋值都是非法的. >>> ...

  3. 【Python】07、python内置数据结构之字符串

    一.字符串 1.定义和初始化 In [4]: s = "hello python" In [4]: s = "hello python"In [5]: s Ou ...

  4. 【Redis源码剖析】 - Redis内置数据结构之压缩列表ziplist

    在前面的一篇文章[Redis源码剖析] - Redis内置数据结构之双向链表中,我们介绍了Redis封装的一种"传统"双向链表list,分别使用prev.next指针来指向当前节点 ...

  5. 【Redis源代码剖析】 - Redis内置数据结构之压缩字典zipmap

    原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/51111230 今天为大家带来Redis中zipmap数据结构的分析,该结构定义在 ...

  6. python内置数据结构教程_python课程第二周 内置数据结构——列表和元组

    5种内置数据结构:列表.元组.字典.集合.字符串.列表.字典.字符串三种被称为线性结构.针对线性结构的操作有:切片.封包和解包.成员运算符.迭代. 针对数据结构的操作有解析式:解析式分为列表解析.生成 ...

  7. python数据结构的列表_Python内置数据结构——列表list

    内置数据结构分类: 数值型 int , float , complex , bool 序列对象 字符串 str 列表 list tuple(元组) 键值对 集合 set 字典 dict 数字型int ...

  8. go 判断元素是否在slice_Go内置数据结构原理

    作者:jackshi,腾讯 PCG 后台开发工程师 从C++切换到Go语言一年多了,有必要深入了解一下Go语言内置数据结构的实现原理,本文结合示例与Go源码深入到Go语言的底层实现. 数组 定义 数组 ...

  9. python内置数据结构之str

    字符串 一个个字符串组成的有序的序列,是字符串的集合. 使用单引号.双引号.三引号引住的字符串序列. 字符串是不可变对象. Python3起,字符串默认是Unicode类型 字符串join连接* &q ...

最新文章

  1. Android类库打包方法探究
  2. 字节跳动终于宣布取消大小周,字节员工却一片哀嚎!
  3. Java运行时动态加载类之ClassLoader加载class及其依赖jar包
  4. oracle 安装及使用方法,Oracle安装及使用小结
  5. 微服务架构:BFF和网关是如何演化出来的?
  6. generator 中 调用另一个 generator
  7. 【MFC系列-第13天】Windows系统对话框(对话框记事本逻辑)
  8. 变化很大!2021年THE世界大学排名出炉,这些中国高校表现出色!
  9. liunx php apache2,linux apache2部署php
  10. php 5.6.30 漏洞,PHP 5.6.30 正式发布,安全漏洞修复
  11. 【报告分享】中国都市圈发展报告:城镇化白皮书5.0.pdf(附下载链接)
  12. Deformable 3D shape registration based on local similarity transforms
  13. spring加载属性(properties)文件
  14. SQLserver数据库还原后显示正在还原
  15. 【Proteus仿真】PCF8591 AD电压采集8X8点阵显示
  16. [音频处理]傅里叶变换去噪
  17. 渗透测试工程师面试题
  18. Git bash和 Git GUI设置中文
  19. GitHub上史上最全的iOS开源项目分类汇总
  20. 我的世界空岛生存服务器制作,我的世界:空岛生存“岩浆”没了咋办?大佬给出了6种解决方案!...

热门文章

  1. 汇编---输出AX的地址值
  2. Git 的 4 个阶段的撤销更改
  3. Pixhawk的传感器数据(陀螺、加计等)流程
  4. 单向链表的C语言实现与基本操作
  5. BellmanFord
  6. Mysql 优化的一些要点
  7. [BUUCTF-pwn]——jarvisoj_level2
  8. makefile与make
  9. 5G PDCCH介绍
  10. JSP URL重写-urlrewrite