Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。接下来和大家一起讨论一个常用的内建函数-format()函数。
Python3引入了一种新的方式来格式化字符串,这个同样也向反向移植到了Python2.7中。“新式”格式化字符串废除了%操作符这种特殊语法,格式化字符串更常规。格式化字符串现在是以在字符串对象上调用format()函数来处理。
你可以使用format()函数来做些简单的位置格式化:
- >>> score = 59
- >>> name = 'Ming'
- >>> '{} {}'.format(score, name)
- '59 Ming'
无论是整数还是字符串都可以用大括号格式化。下面会演示一些format方法格式化字符串的强大特性。
数字
- >>> '{}'.format(42)
- '42'
- >>> '{}'.format(3.14)
- '3.14'
- >>> '{:d}'.format(42) # 'd'代表整数
- '42'
- >>> '{:d}'.format(3.14)
- Traceback (most recent call last):
- File "
" , line 1, in- ValueError: Unknown format code 'd' for object of type 'float'
- >>> '{:f}'.format(3.14) # 'f'代表浮点数
- '3.140000'
- >>> '{:.2f}'.format(3.14)
- '3.14'
- >>> '{:.5f}'.format(3.1415926) # 被舍掉的第一位是2,直接舍掉了
- '3.14159'
- >>> '{:.6f}'.format(3.1415926) # 被舍掉的第一位是6,往前进了一位
- '3.141593'
- >>> '{:+d}'.format(42) # 可以使用正负号
- '+42'
- >>> '{:d}'.format((-42))
- '-42
- >>> '{:,}'.format(123456789) # 使用',' 将数字每三个一隔开
- '123,456,789'
调整顺序
- >>> '{0} {1} {2}'.format(42, 'Ming', 3.14) # 使用数字可以调整格式化字符串的顺序
- '42 Ming 3.14'
- >>> '{2} {1} {0}'.format(42, 'Ming', 3.14)
- '3.14 Ming 42'
- >>> '{2} {0} {1}'.format(42, 'Ming', 3.14)
- '3.14 42 Ming'
使用名字
- # 可以指定需要格式化字符串的名字,这样做可读性更好
- >>> '{name}的分数是{score}'.format(name="Ming", score=59)
- 'Ming的分数是59'
填充和对齐
- >>> '{:>10}'.format('Ming') # 一共占10个“格子”,如果不够则尽量靠右,其余用空格填充
- ' Ming'
- >>> '{:10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量靠左,其余用空格填充
- 'Ming '
- >>> '{:^10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量居中,其余用空格填充
- ' Ming '
- >>> '{:_<10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量靠左,其余用'_'填充
- 'Ming______'
- >>> '{:s<10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量靠左,其余用's'填充
- 'Mingssssss'
- >>> '{:_>10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量靠右,其余用'_'填充
- '______Ming'
- >>> '{:_^10}'.format('Ming') # 一共占用10个“格子”,如果不够则尽量居中,其余用'_'填充
- '___Ming___'
- # 格式化数字,一共占10个“格子”,如果不够则尽量靠右,其余用空格填充
- >>> '{:10d}'.format(59)
- ' 59'
- >>> '{:06.2f}'.format(3.141592653589793) # 保留两位小数,一共占用6位
- '003.14'
截断长字符串
- >>> '{:.4}'.format('Xiao Ming') # 只保留字符串的前四位
- 'Xiao'
- # 只保留字符串的前四位,一共占用10个“格子”,如果不够则尽量靠左,其余用空格填充
- >>> '{:10.4}'.format('Xiao Ming')
- 'Xiao '