Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
>>> {} {}.format('1','2') SyntaxError: invalid syntax 注意上面那两个括号需要带引号 >>> '{} {}'.format('1','2') '1 2' >>> '{}{}'.format(1,2) '12' >>> '{} {}'.format('hello','world') 'hello world' 可以看到一个大括号代表一个字符串,而 大括号之间的距离代表着两个字符串之间的距离
会强制性转变为字符串类型变量
>>> print(type('{}{}'.format(1,2))) <class 'str'>
大括号里面是可以带数字的,他表示的是取format( )括号中的第几个元素,索引从0开始
>>> '{1} {0}'.format('world','hello') 'hello world' 可以对比一下 >>> '{} {}'.format('hello','world') 'hello world'
同样的里面除了放数字,字符串以外,是可以放函数的,但函数必须有返回值,因为有了返回值以后函数就不再是函数类型而是return的类型
>>> def fun(): return 5 >>> '{} {}'.format(1,fun()) '1 5'
除了这些fotmat()的()括号中还可以放入对象,列表,字典
1.列表
好像需要重新赋一下值 >>> _list=['hello','world','xx'] >>> print('{_list[1]} {_list[0]} {_list[1]}'.format(_list)) Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> print('{_list[1]} {_list[0]} {_list[1]}'.format(_list)) KeyError: '_list' >>> print('{a[1]} {a[0]} {a[1]}'.format(a=_list)) world hello world 也可以这个样子 # 通过列表索引设置参数 my_list = ['菜鸟教程', 'www.runoob.com'] print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
2.字典
site = {"name": "菜鸟教程", "url": "www.runoob.com"} print("网站名:{name}, 地址 {url}".format(**site))
format函数在大括号中还有一下可以放的东西:
^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
此外我们可以使用大括号 {} 来转义大括号,如下实例:
需要注意的是需要使用 : >>> "{<5} {}".format(1,2) Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> "{<5} {}".format(1,2) KeyError: '<5' >>> "{:<5} {}".format(1,2) '1 2' >>> "{:>5} {}".format(1,2) ' 1 2' 默认填充的是空格,但也可以是其他的 '{:*^10}'.format(1) '****1*****'