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

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 string In [6]: 'i love %s,i am %d' % ('python','sfc')
TypeError: %d format: a number is required, not str In [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 range In [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

[PY3]——内置数据结构(4)——字符串格式化(format)的更多相关文章

  1. [PY3]——内置数据结构(5)——字符串编码

    py2和py3中关于字符串的最大区别? python2中只有 unicode类型 而python3中有 string bytes两种类型 关于string和bytes的区分? 1.str是文本序列.b ...

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

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

  3. Python内置数据结构之字符串str

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

  4. [PY3]——内置数据结构(6)——集合及其常用操作

    集合及其常用操作Xmind图          集合的定义 # set( ) # {0,1,2} //注意不能用空的大括号来定义集合 # set(可迭代对象) In [1]: s=set();type ...

  5. [PY3]——内置数据结构(7)——字典及其常用操作

    字典及其常用操作Xmind图 关于字典 字典是一种key-value结构 字典是无序的 字典的定义 # {}大括号可以直接定义一个空字典 In [1]: d={};type(d) Out[1]: di ...

  6. [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()

    线性结构的总结 列表list  元组tuple  字符串str  bytes  bytearray的共同点: 都是顺序存储.顺序访问的: 都是可迭代对象: 都可以通过索引访问 线性结构的特征: 可迭代 ...

  7. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  8. [PY3]——内置数据结构(1)——列表及其常用操作

    列表及其常用操作_xmind图         about列表 列表是一个序列,用于顺序存储数据 列表分为两种:ArrayList(用数组实现).LinkedList(用链表实现) 定义与初始化 #l ...

  9. [PY3]——内置数据结构(2)——元组及其常用操作

    定义和初始化 #tuple() 使用工厂函数tuple定义一个空元组 #() 使用圆括号定义一个空元组 #(1,2,3) 使用圆括号定义有初始值的元组 #tuple(可迭代对象) 把可迭代对象转换为一 ...

随机推荐

  1. Mac安装Tomcat

    1. 到Tomcat官网下载,如下找tar格式文件: http://ftp.twaren.net/Unix/Web/apache/tomcat/tomcat-8/v8.0.41/bin/apache- ...

  2. Replication--分区+复制

    1>配置订阅表使用分区,在发布的项目属性中设置"复制分区方案"和"复制索引分区方案"为true,然后初始化订阅 2>在发布数据库上修改发布属性 -- ...

  3. Delphi32位程序拷贝system32目录中文件解决方法!

    源码下载:http://download.csdn.net/detail/sunylat/9740352 unit Unit1; interface uses Winapi.Windows, Wina ...

  4. Mysql 索引原理《一》索引原理与慢查询1

    为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然 ...

  5. 用户画像,知乎Live总结

    ttps://www.zhihu.com/lives/889189116527403008/messages 用户画像两层含义:单个标签:用户的分布 标签体系要与时俱进,如果标签被下游强依赖,则不轻易 ...

  6. [51nod] 1090 3个数和为0 暴力+二分

    给出一个长度为N的无序数组,数组中的元素为整数,有正有负包括0,并互不相等.从中找出所有和 = 0的3个数的组合.如果没有这样的组合,输出No Solution.如果有多个,按照3个数中最小的数从小到 ...

  7. linux杀进程

    1.Linux杀进程的一个例子 (1)查看进程:ps -ef | grep 进程名 (2)杀进程:kill -9 进程名或者进程号 例如:杀tomcat的进程 (1)ps -ef | grep tom ...

  8. php获取随机字符串的几种方法

    方法一:shuffle函数(打乱数组)和mt_rand函数(生成随机数,比rand速度快四倍) /** * 获得随机字符串 * @param $len 需要的长度 * @param $special ...

  9. 解决You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    pip install ...出现问题 直接输入python - pip install --upgrade pip就可以了

  10. Maven环境下面多项目之间的引用

    如图: https://github.com/sdl/odata-example  sdl OData例子包含了4个项目,下载到本地后编译.发现只有model项目是可以编译过去了.其他几个暂时编译不过 ...