format语法格式:

str.format()
        str是指字符串实例对象,常用格式为‘ ’.format()

    def format(self, *args, **kwargs): # known special case of str.format"""S.format(*args, **kwargs) -> strReturn a formatted version of S, using substitutions from args and kwargs.The substitutions are identified by braces ('{' and '}')."""pass

format参数格式

'{[index][ : [fill] align][sign][#][width][.precision][type]} {……}{……} '.format()
注意,格式中的[ ]内的参数都是可选参数,可以使用也可以不使用

  • index:指定冒号**:**后面出现的参数在‘format()’中的索引值,如果没有,则以format()中的默认顺序自动分配
  • fill:指定空白处的填充符。
  • align:指定数字的对齐方式:
align 含义
< right-aligned 左对齐(对于大部分对象时为默认)
> right-aligned 右对齐 (对于数字时为默认)
= 数据右对齐,同时将符号放置在填充内容的最左侧,该选项只对数字类型有效
^ 数据居中,此选项需和 width 参数一起使用
  • sign:指定有无符号数,此参数的值以及对应的含义如表所示
sign 参数 含义
+ 正数前面添加 ‘ + ’ ,负数前面加 ‘ - ’
- 正数前面不添加 ‘ + ’ ,负数前面加 ‘ - ’
space 正数前面添加 ‘ 空格 ’ ,负数前面加 ‘ - ’
# 对于二进制数、八进制数和十六进制数,使用此参数,各进制数前会分别显示 0b、0o、0x前缀;反之则不显示前缀
  • width:指定输出数据时所占的宽度
  • . precision:如果后面存在type参数,则指的是保留小数的位数,如果type参数不存在,则是指有效数字的位数
  • type:指定输出数据的具体类型

一、简单使用方法

1.无参数

  • foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 ……
  • 也可以不输入数字,则会按照顺序自动分配,而且一个参数可以多次插入

示例代码:

name = '张三'
age = 25
sex = '男'print('{}、{}、{}'.format(name, age, sex))  #  占位符不指定顺序
print('{0}、{1}、{2}'.format(name, age, sex)) #  占位符制定顺序
print('{0}、{2}、{1}'.format(name, age, sex)) #  换一下顺序试试
print('{0}、{2}、{1}、{0}、{2}、{1}'.format(name, age, sex))

运行结果:

2. key value

示例代码:

name1 = '张三'
age1 = 25
sex1 = '男'print('name:{name}、age={age}、sex:{sex}'.format(name=name1, age=age1, sex=sex1))
print('name:{name}、sex:{sex}、age={age}'.format(name=name1, age=age1, sex=sex1))

运行结果:

3. 列表

示例代码:

lst1 = ['张三', '男', 25]
lst2 = ['李四', '男', 28]print('name:{Lst[0]},sex:{Lst[1]},age:{Lst[2]}'.format(Lst=lst1))
print('name:{0[0]},sex:{0[1]},age:{0[2]}'.format(lst1))
print('name:{0[0]},sex:{0[1]},age:{0[2]}'.format(lst2))
print('name:{0[0]},sex:{0[1]},age:{0[2]}'.format(lst1, lst2))
print('name:{1[0]},sex:{1[1]},age:{1[2]}'.format(lst1, lst2))
print('name:{0[0]},sex:{0[1]},age:{0[2]},name:{1[0]},sex:{1[1]},age:{1[2]}'.format(lst1, lst2))

运行结果:

4. 字典

示例代码:

dic1 = {'name': '张三', 'sex': '男', 'age': 25}
dic2 = {'name': '李四', 'sex': '男', 'age': 28}print('name:{Dic[name]},sex:{Dic[sex]},age:{Dic[age]}'.format(Dic=dic1))
print('name:{name},sex:{sex},age:{age}'.format(**dic2))

运行结果:

5. 类

示例代码:

class Info(object):name = '张三'sex = '男'age = 25print('name:{info.name},sex:{info.sex},age:{info.age}'.format(info=Info))

运行结果:

6. 魔法参数

*args表示任何多个无名参数,它是一个tuple or list;**kwargs表示关键字参数,它是一个 dict。

示例代码:

lst = [',', '.']
dic = {'name': '张三', 'sex': '男', 'age': 25}print('name:{name}{0}sex:{sex}{0}age:{age}{1}'.format(*lst, **dic))

运行结果:

7.使用感叹号!

  • !r:引用__repr__
  • !s: __str__
  • !a:acsii模式

示例代码1:

class Data(object):data = 'my is test data!'def __str__(self):return 'my is __str__!'def __repr__(self):return 'my is __repr__!'# Old
print('%s' % Data().data)
print('%s, %r' % (Data(), Data()))print("*" * 100)# New
print('{}'.format(Data.data))
print('{}'.format(Data().data))
print('{0!s}, {0!r}'.format(Data))
print('{0!s}, {0!r}'.format(Data()))

运行结果:

<conversion>组件,数据强制转换 str() 强制转换方法。

示例代码2:  【一般类型对于<conversion>组件是不起作用的】

s = 12345
print(s, type(s))a = '{0!a}'.format(s)
b = '{0!s}'.format(s)
c = '{0!r}'.format(s)print(a, type(a))
print(b, type(b))
print(c, type(c))

运行结果:

示例代码3:

import stringprint("Harold's a clever {0!s}".format(string) == "Harold's a clever {0}".format(str(string)))
print("Harold's a clever {0!s}".format(string))# '{0!s}'.format(42) # !s 转换为str()'42'
# '{0!r}'.format(42) # !r 转换为repr()'42'
# '{0!a}'.format(42) # !a 转换为ascii()'42'

运行结果:

8.__format__() 用法

__format__()传参方法:someobject.__format__(specification)

  specification为指定格式,当应用程序中出现"{0:specification}".format(someobject)或format(someobject, specification)时,会默认以这种方式调用。

  当specification为" "时,一种合理的返回值是return str(self),这为各种对象的字符串表示形式提供了明确的一致性。

  注意:"{0!s}".format()和"{0!r}".format()并不会调用__format__()方法,他们会直接调用__str__()或者__repr__()。

8.1 自定义__format__()格式

示例代码:

class FormatTest(object):def __init__(self, name, age):self.name = nameself.age = agedef __format__(self, specification):if specification == "":return str(self)strformat = specification.replace("%s", self.name).replace("%r", self.age)return strformatif __name__ == "__main__":people = FormatTest("zhangsan", "25")print(people)print("{}".format(people))print("{0:%s-%r}".format(people))print(format(people, "%s-%r"))

运行结果:

8.2格式化对象中的集合

示例代码:

class FormatTest(object):def __init__(self, name, age):self.name = nameself.age = agedef __format__(self, specification):if specification == "":return str(self)str_format = specification.replace("%s", self.name).replace("%r", self.age)return str_formatclass Handle(object):def __init__(self, *people):self.peoples = []self.peoples = list(people)def __format__(self, specification):if specification == "":return str(self)return ",".join("{:{fs}}".format(people, fs=specification) for people in self.peoples)if __name__ == "__main__":res = Handle(FormatTest("zhangsan", "25"), FormatTest("lisi", "26"), FormatTest("wangwu", "27"))print(res)print("{:%s-%r}".format(res))

运行结果:

二、参数使用方法

示例代码1:

#  python :^:代表居中显示,数字567,位数width=10,fill=*(填充符为*)
print('{:*^10}'.format(567))

运行结果:

示例代码2:

# python :0是填充符,2是width,表示位数为2
print('{:02}:{:02}:{:02}'.format(13, 4, 57))
print('{:05}:{:05}:{:05}'.format(13, 4, 57))

运行结果:

python中.format()方法用法详解相关推荐

  1. python中format的用法详解

    format是字符串内嵌的一个方法,用于格式化字符串.以大括号{}来标明被替换的字符串. 1.基本用法 1. 按照{}的顺序依次匹配括号中的值 s = "{} is a {}".f ...

  2. python中__init_subclass__方法用法详解

    源码内容: def __init_subclass__(self, *args, **kwargs): # real signature unknown"""This m ...

  3. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  4. python中的super用法详解_Python中super函数用法实例分析

    本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...

  5. python classmethod_对Python中的@classmethod用法详解

    在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...

  6. python中setattr()函数用法详解

    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. getattr()用法详见博文:python中getattr()函数用法详解_IT之一小佬的博客-CSDN ...

  7. Python中self的用法详解(链接传送)

    Python中的self是什么意思? Python新手,今天看了一篇详细易懂的self用法介绍,感觉开了些窍,这里附上链接,以方便复习. Python中self用法详解(转载自CLHugh)

  8. Python的format格式化用法详解

    Python的format格式化用法可以通过下面几种方式来实现: 1.使用{}作为占位符,通过索引来指定要替换的参数,如: # 替换第一个参数 "Hello {}, Welcome to P ...

  9. php中sisson用法,thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 s ...

最新文章

  1. 【图论】有向无环图的拓扑排序
  2. SharePoint2010 内容类型剖析
  3. Solaris 常用命令
  4. Spark的RDD序列化
  5. python和c++哪个好找工作-python和C++语言有何优缺点?哪个更适合人工智能?
  6. css03层次选择器
  7. Ubuntu 安装 Sun JDK
  8. Swift面向对象基础(上)——Swift中的类和结构体(下)
  9. 领域驱动设计,让程序员心中有码(五)
  10. Ubuntu报“xxx is not in the sudoers file.This incident will be reported” 错误解决方法
  11. cypress离线安装_【拆一个高端货】 美国NI公司 GPIB-USB转接卡 长标题
  12. Opencv3与Opencv2的区别,及opencv2项目移植到opencv3注意事项
  13. PPAPI开发之路(一)环境配置
  14. 顶级摄影师的磨皮美白利器Portraiture,支持搭配微设证件大师使用
  15. python算p值_Python sklearn-如何计算p值
  16. xlsx模块 前端_node模块之xlsx使用
  17. H3CNE 综合实验,全网最全教程
  18. Android获取WIFI 的ssid 方法适配Android9.0
  19. Processing基础
  20. git checkout切换分支报错解决办法

热门文章

  1. linux 邮箱配置
  2. 可以扫描10米以上距离的手持终端,idata65手持终端配置霍尼4850头--传翔电商
  3. 【MySQL专题】MySQL中一条SQL是如何被执行的?---来自于令狐的独孤九剑
  4. 前端解决粘贴过来的东西不触发键盘事件@令狐张豪
  5. mysql中func什么意思_在C语言程序中,func()是什么意思?
  6. “贷款买车”与“全款买车”怎么选?
  7. 使用RSS地址订阅微信公众账号的文章~
  8. vue项目设置浏览器标题title
  9. 国家防沉迷实名认证系统--NODEJS
  10. Java版本实现俄罗斯方块小游戏