python格式化之format与%
程序员文章站
2022-03-08 14:36:24
...
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'Abel'
"""
Python中内置的%操作符和.format方式都可用于格式化字符串。先来看看这两种具体格式化方法的基本语法形式和常见用法。
%操作符根据转换说明符所规定的格式返回一串格式化后的字符串,转换说明符的基本形式为: %[转换标记][宽度[.精确度]]转换类型。
其中常见的转换标记和转换类型分别下所示。如果未指定宽度,则默认输出为字符串本身的宽度。
转换标记 解释
- 表示左对齐
+ 在正数之前加上+
(a space) 表示正数之前保留空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'
0 表示转换值若位数不够则用0填充而非默认的空格
c 转换为单个字符,对于数字将转换该值所对应的ASCⅡ码
s 转换为字符串,对于非字符串对象,将默认调用str()函数进行转换
r 用repr()函数进行字符串转换转换
i d 转换为带符号的十进制数
u 转换为不带符号的十进制数
o 转换为不带符号的八进制
x,X 转换为不带符号的十六进制
e E 表示为科学计数法表示的浮点数
f F 转成浮点数(小数部分自然截断)
g G 如果指数大于-4或者小于精度值则和e相同,其他情况与f相同;
如果指数大于-4或者小于精度值则和E相同,其他情况与F相同
"""
### %操作符格式化字符串时有如下几种常见用法:
### (1)直接格式化字符或者数值。
print("score:%06.1f" % 9.5) # score:0009.5
###(2)以元组的形式格式化
name,num = "Abel",10
print("%s today have %d classes" % (name, num)) #Abel today have 10 classes
dict = {"name":"Abel", "num":10}
print("%(name)s today have %(num)d classes" % dict) #Abel today have 10 classes
#注意上面的是%(name)s和%(num)d,不能漏了s和d。
"""
format方式格式化字符串的基本语法为:[[填充符]对齐方式][符号][#][0][宽度][,][.精确度][转换类型]。
其中填充符可以是除了“{”和“}”符号之外的任意符号,对齐方式和符号分别如下所示。转换类型跟%操作符的转换类型类似。
format方式格式化字符串的对齐方式:
对齐方式 解释
< 表示左对齐,是大多数对象为默认的对齐方式
> 表示右对齐,数值默认的对齐方式
= 仅对数值类型有效,如果有符号的话,在符号后数值前进行填充,如-000029
^ 居中对齐,用空格进行填充
format方式格式化字符串符号列表:
符号 解释
+ 正数前加+,负数前加-
- 正数前不加符号,负数前加-,为数值的默认形式
空格 正数前加空格,负数前加-
"""
###format方法几种常见的用法如下:
###(1)使用位置符号。
print("The number {0:,} in hex is :{0:#x}, the number {1:,} in oct is {1:#o}".format(6666,8888))
#The number 6,666 in hex is :0x1a0a, the number 8,888 in oct is 0o21270
###(2)使用名称
print("{name} has {num} classes today!".format(name = "Abel", num = 10)) #Abel has 10 classes today!
###(3)通过属性
class Customer(object):
def __init__(self, name, gender, phone):
self.name = name
self.gender = gender
self.phone = phone
def __str__(self):
return "Customer ({self.name},{self.phone})".format(self = self) #Customer (Abel,698569)
print(str(Customer("Abel","male","698569")))
###(4)格式化元组的具体项
arr = (6,9,8)
print("X1:{0[0]},X2:{0[1]},X3:{0[2]}".format(arr)) #X1:6,X2:9,X3:8
"""
为什么要尽量使用 format方式而不是%操作符来格式化字符串:
理由一:fmat方式在使用上较%操作符更为灵活。使用 format方式时,参数的顺序与格式化的顺序不必完全相同,而用%方法需要使用字典形式才能达到同样的目的。
理由二: format方式可以方便地作为参数传递。
理由三:%最终会被 format方式所代替。这个理由可以认为是最直接的原因,根据Python的官方文档,format方法最终会取代%,
在Python3.0中format方法是推荐使用的方法,而之所以仍然保留%操作符是为了保持向后兼容。
理由四:%方法在某些特殊情况下使用时需要特别小心。
"""
实用小建议:安装AD block可以屏蔽掉CSDN上的好多广告
上一篇: jq
推荐阅读
-
分析Python感知线程状态的解决方案之Event与信号量
-
详解python方法之绑定方法与非绑定方法
-
Python爬虫之pandas基本安装与使用方法示例
-
.Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]
-
Python 搭建Web站点之Web服务器与Web框架
-
Python常见格式化字符串方法小结【百分号与format方法】
-
Python常见格式化字符串方法小结【百分号与format方法】
-
浅谈Python 字符串格式化输出(format/printf)
-
浅谈Python 字符串格式化输出(format/printf)
-
Python入门篇之编程习惯与特点