![零基础入门Python数据分析与机器学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/147/44510147/b_44510147.jpg)
2.2.4 格式化:format()与%
目前Python中字符串的格式化有format和%两种。其中format()是Python 2.6新增的一种格式化字符串函数,与之前的%格式化字符串相比,优势比较明显。下面重点讲解format()函数及其使用方法。
1.利用f-string格式化
在Python 3.6中加入了一个新特性:f-strings,其表示可以直接在字符串的前面加上f来格式化字符串。例如,输出“2020年12月华东地区的销售额是99.68万元。”的代码如下:
region = '华东' sales = 99.68 s = f'2020年12月{region}地区的销售额是{sales}万元。' print(s)
2.利用位置格式化
可以通过索引直接使用“*”将列表打散,通过索引来取值。例如,输出“2020年12月华东地区的销售额是99.68万元,利润额是3.01万元。”的代码如下:
sales = ['华东',99.68,3.01] s = '2020年12月{0}地区的销售额是{1}万元,利润额是{2}万元。'.format(*sales) print(s)
3.利用关键字格式化
也可以通过“**”将字典打散,通过键(Key)来取值(Value)。例如,输出“2020年12月华东地区的销售额是99.68万元,利润额是3.01万元。”的代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P43_8328.jpg?sign=1738843608-a3j3OHft7QdJVG0wwSpax6yR6flvsMEn-0-5c49f5f1f9db625a6617069f6ff01085)
4.利用对象属性格式化
在类中,可以自定义__str__方法来实现特定的输出。例如,输出“姓名:王海,年龄:26岁”的代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P43_8330.jpg?sign=1738843608-W8ciwHkyZGvumd5GTVWTM3DRrkV5ge9B-0-c03e91ba268292a8662a87c47cda80aa)
5.利用下标格式化
还可以利用下标+索引的方法进行格式化。例如,输出“2020年12月份华东地区销售额是99.68万元,利润额是3.01万元。”的代码如下:
sales = ['华东',99.68,3.01] s = '2020年12月份{0[0]}地区销售额是{0[1]}万元,利润额是{0[2]}万元。'.format(sales) print(s)
6.利用填充与对齐格式化
填充与对齐的方法与Excel中的基本类似,通常填充与对齐一起使用。其中,>、^、<分别表示右对齐、居中、左对齐,后面的数值表示宽度,“:”后面(默认是空格)表示填充的字符,只能是一个字符。例如,对数值19进行填充与对齐,代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P43_8333.jpg?sign=1738843608-wEalUOxd3P2SLO2VYgaMbcubbaeId41e-0-209e280489d9311b56e06de4e0b3ad30)
运行上述代码,输出如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P44_8336.jpg?sign=1738843608-9HzeLQhft3j0vwBHDg6srG2ssZUW0fBt-0-b02e3811a5de92d689bb10370023ad0e)
其中符号后面的数值10表示总共有多少位字符,s1用空格填充左边的空格,s2用0填充左边的空格,s3用0填充左右两边的空格,s4用“*”填充右边的空格。
7.利用精度与类型格式化
精度与类型可以一起使用,格式为{ :.nf} .format(数字),其中.n表示保留n位小数,对于整数直接保留固定位数的小数位。例如,输出3.1416和26.00的代码如下:
![](https://epubservercos.yuewen.com/F4E5C2/23721471401889206/epubprivate/OEBPS/Images/Figure-P44_8338.jpg?sign=1738843608-pXHftU8qNaE802hlgV02j6yQzrujFr2y-0-ec06521e6c25003d069ceca9cdbfe741)
8.利用千分位分隔符格式化
"{:,}".format()中的冒号加逗号表示可以将一个数字每三位用逗号进行分隔,例如输出“123,456,789”的代码如下:
print("{:,}".format(123456789))
此外,目前%格式化字符串相对来说使用较少,例如输出“Hello World!”的代码如下:
print('%s' % 'Hello World!')