本文系统的介绍了Python中格式化输入方法format()函数的使用方法。

写下这篇博文的初衷是在学习的过程中发现许多博文对该方法的描述十分具体但还不够详尽,有互相补充的部分,许多书中的内容又受到版本的局限,因此希望将format方法的使用方法做一个总结。

format函数的调用

format函数可以被直接调用或在print函数中以占位符实现格式化调用。
在**2.6**版本前,占位符仍和其他语言一样使用%(比如C中)。但在其后的版本,format函数的占位符更改为{}(花括号)。

优化的目的目前总结出了4个:

  1. 花括号封闭可以实现更多格式化的实现,更强大的功能
  2. 使代码具有更强的可读性。
  3. 单个参数可以多次输出,参数顺序可以不相同
  4. 不需要理会数据类型的问题,在%方法中%s只能替代字符串类型

好了,进入正文,对于format函数的使用将分为两部分。

  1. format函数及其占位符的调用格式
  2. 占位符格式和参数设定

ps:在介绍的时候各个内容会有小小的穿插,其实是为了更加便于理解~

format函数及其占位符的调用格式

format函数可以直接被调用,比如在shell中直接调用

例1

>>>'{} {}'.format('hello','world')       #占位符不指定顺序
'hello world'>>>'{0} {1}'.format('hello','world')       #占位符制定顺序
'hello world'>>>'{1} {0}'.format('hello','world')       #换一下顺序试试
'world hello'

我们更常用的方式是放入print()函数中进行格式化输出

例2

print('{}获得了S8冠军'.format('IG')
#结果:
#IG获得了S8冠军

占位符以及参数设定

在第一部分中,简单地介绍了两种调用format函数的方式。可以很清晰地发现,在占位符中也可以输入一些参数,对格式化输出的参数进行设定,下面就详细的介绍占位符中各项参数的顺序和设置。

占位符中的各项参数格式如下所示

例3(伪代码)

'{position/key:fill,align,sign,width,precision,type}'.format(...)

position/key

position/key指定了占位符处从format函数的参数中调用哪个值,position很好理解,比如上面例1中介绍的后两种调用,就指定了format中两个参数hello和world在占位符中调用的顺序,注意这个顺序是按照数组排序中从‘0’开始计算的。 当然,你也可以使用键值对进行操作。比如下面的例4:

例4

print('the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(S8='IG',S9='FPX'))
#结果:the championship of the S8 is IG, and for S9, it'FPX.

有写小伙伴可能要问了,键值对(字典)的使用在这里有什么好处吗?感觉还不如填个数字来的快捷啊?

再来看下面这一段代码:

例5:

dic={'S8':'IG','S9':'FPX'}
print('the championship of the S8 is {S8}, and for S9, it\'s {S9}.'.format(**dic))
#结果:the championship of the S8 is IG, and for S9, it'FPX.

在例5中,有些需要特别说明的地方,首先如果你要在format的括号里调用字典,记得在字典名前面加**,也就是字典的函数调用方法哦!从例5中应该能发现了,我们不需要在format中专门把字典列出来,而是可以调用以前定义过的字典,这就使得其具备了重复调用的优点。想象一下这一点会有什么不同,这是%方法做不到的哦。

你也可以用数组的形式填充,如例6所示:

例6

names=['hilary','vergil','nero']
places=['chengdu','shijiazhuang','tokyo']
print('Hi, {names[0]}. I am {names[1]} and this is {names[2]}.'.format(names=names)#Hi, hilary. I am vergil and this is nero.

第一个位置的参数,也是冒号前唯一的参数相信大家就搞明白啦。

下面的参数都是并列的,我们一个一个说明。首先要讲清楚这些参数如何并列或分隔。

那就是无需分隔,没错,下面的这些参数,你需要定义哪些就按照顺序写下就行,不用加什么逗号或者空格分开,你可能会想,这不容易产生歧义吗?我学习的时候也想过这个问题,事实是开发者编辑函数逻辑时就吧这些参数的设定值用不会产生任何歧义的符号或数字组合起来了,这一点当你使用时也会发现。

fill参数

fill参数用于指定填充符,默认值为空格,实际经验是,很少有场景会用到这个参数,除非是按照国际通用的三位一个逗号分隔数字等场景。

例7:

>>> print('{:,}'.format(12345678))
12,345,678

align参数

align参数用于格式化文本的对齐方式,当你填充了宽度的时候,这个参数的作用是很大的,当然,在一句话中无缝的插入一个格式化文本的话,这个参数的设置就不大有意义了。

> < ^
右对齐 左对齐 居中对齐

例8:

在shell中运行如下代码(代码中数字三十表示宽度,目的是为了拉大总体宽度显示出对齐的效果,后文会提到宽度的使用方法)

>>> print('{:<30}'.format('pos'))
pos
>>> print('{:>30}'.format('pos'))pos
>>> print('{:^30}'.format('pos'))pos

sign参数

sign参数用于指定是否保留正负号,这个针对format中数字起作用。

+ - SPACE
保留正负号 仅保留负号 正数留空,负数保留负号

例9:

>>> print('{0:+} {0:-} {0: }'.format(123))
+123 123  123
>>> print('{0:+} {0:-} {0: }'.format(-123))
-123 -123 -123

ps:注意第一行代码运行结果中最后一个保留了一个空格哦

width参数

width参数控制输出的长度,经过我的测试,该长度为最小长度,即当设定的width参数小于format中调用的值时,不生效;而当设定值大时,会用空格(默认)或零进行填补,如果想要用0进行填补,那么需要在width前添加0,width参数的使用如例10所示。在例8中展示对齐参数时也使用了宽度参数,可以看出对齐是对我们的填补方式存在影响,其具体影响也在例10中给出。

例10:

print('{0:12} {0:05} {0:2}'.format(123)) #依次为12位宽空格填补、5位宽0填补、2位宽
#结果:
#         123 00123 123
print('{0:<012},{0:>012},{0:^012} '.format(123))
#结果:
#123000000000,000000000123,000012300000
print('{0:^012},{1:^012},{0:^011},{1:^011} '.format(123,1234))
#结果:
#000012300000,000012340000,00001230000,00012340000

可以看出空格的填补同样以对齐的区别显示出来,但是0的填补却往往改变了我们数字的表示,使用时要注意。另一个要注意的是当你的总宽度和数据的有效宽度的奇偶性不同时,居中对齐的方式会有不同,这就是例10中第三行代码希望表达的意思。可以看出,当奇偶次出现不同时,总是偏向左一位对齐。

precision参数

和%方法中一样,如%.3f表示保留小数点三位小数,用【.保留有效数字位数(f)】表示数据的精确度,如果添加f,则表明保留的为小数点后位数,如果不加,则表示保留的是有效数字位数。例11很好的展示了这种区别。

例11:

print('{0:.2f},{0:.7f},{0:.2},{0:.2%} '.format(123.123456789))
#结果:
#123.12,123.1234568,1.2e+02,12312.35% 

其实小伙伴们应该注意到了,这里的f,%其实都算是precision参数后的type参数控制的内容——数据类型。因此,我们对精度简单介绍,而将precision-type参数的联合参数具体介绍,因为二者具有很强的关联。

precision-type参数

首先介绍所有的type参数,如下表所示:

type参数 含义
默认 十进制整数 123
f 浮点数 123.123
% 百分比格式 12312.3%
e 指数形式 1.2e01
- d 十进制整数 123
进制转换 十进制 123
b 二进制 1101111
o 八进制 157
x 十六进制 6f
#x 小写表示的十六进制 0x6f
#X 大写表示的十六进制 0X6F
c 字符,打印前转换为Unicode代码 ‘123’

本文由学习总结而成,引用了一段代码,文章中有引用号,引用链接放在下面:

[1]:

Python format函数_Nero Zhang的博客-CSDN博客Python字符串的format函数format()函数用来收集其后的位置参数和关键字段参数,并用他们的值填充字符串中的占位符。通常格式如下:'{pos or key : fill, align, sign, 0, width, .precision, type}'.format(para1...)整个花括号是一个占位符,冒号前的位置或者关键字用来定位format函数的参数,冒号后面用https://blog.csdn.net/Hilavergil/article/details/79161590?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163513011016780271517235%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163513011016780271517235&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-79161590.first_rank_v2_pc_rank_v29&utm_term=python+format%E5%87%BD%E6%95%B0

Python .format()函数使用方法相关推荐

  1. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  2. python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析. (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函 ...

  3. Python format 函数- Python零基础入门教程

    目录 一.format 函数简介 1.format 函数不设置下标 2.format 函数设置下标 二.format 函数实战 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习 ...

  4. python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

    python Format()函数的用法___实例详解(一)(全,例多) (格式化替换,关键字替换,列表字典替换,类格式化, 魔法函数格式化,对齐及填充格式化,format对齐打印) 本篇目录内容:

  5. python内置函数format的使用方法 python format函数怎么用

    1.基本语法 format 函数可以接受不限个参数,位置可以不按顺序. 如:"{1} {0} {1}".format("hello", "world& ...

  6. python format函数实例_Python字符串格式化,format格式化函数详细使用

    Python接触比较多的是字符串,那么操作字符串也就多.Python 支持格式化字符串的输出 . 尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符的字符串中. 代码 ...

  7. Python format() 函数

    Python2.6 开始,新增了一种格式化字符串的函数 format() ,它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % . format () 函数可以接受不限个参数 ...

  8. python format函数实例_python中强大的format函数实例详解

    python中format函数用于字符串的格式化 自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串. 语法 它通过{}和:来代替%. 请看下 ...

  9. python format函数换行_python format函数/print 函数详细讲解(19)

    文章首发微信公众号,微信搜索:猿说python 在python开发过程中,print函数和format函数使用场景特别多,下面分别详细讲解两个函数的用法. 一.print函数 print翻译为中文指打 ...

最新文章

  1. 【原】unity3d刀光闪过
  2. Vim清除最后一个搜索突出显示
  3. 【C language】函数指针
  4. jmeter constant timer 如何添加_阿里巴巴在开源压测工具 JMeter 上的实践和优化
  5. java阻塞超时_JAVA防线程阻塞(超时控制)
  6. P5540-[BalkanOI2011]timeismoney|最小乘积生成树【最小生成树,凸壳】
  7. java运行构建期间出错_构建和运行Java 8支持
  8. (王道408考研数据结构)第一章绪论-第二节2:算法的时间复杂度和空间复杂度
  9. python的列表函数
  10. 自己写的微信小程序炸金花简单版
  11. Javascript+PHP实现在线拍照功能
  12. stc12c5a60s MQ系列传感器及报警
  13. 3DLut表实现log视频的后期调色原理
  14. 遍历所有点的最短路径python_图遍历算法之最短路径Dijkstra算法
  15. Picture 线段树扫描线求轮廓线
  16. 51Nod 1677 treecnt
  17. 信号signal ---带数据的信号的发送及安装
  18. 服务器宝塔Error: connect ETIMEDOUT
  19. Couldnt communicate with helper application Git提交
  20. python通过代理发送邮件_python发送邮件

热门文章

  1. 41. Fast File System (FFS)
  2. centos安装MySQL到指定盘_Centos下安装mysql 和挂载硬盘
  3. ios图锁HQ应用项目源码
  4. 白杨SEO:百度算法更新大全合集49条(截至2021年9月),做百度关键词搜索排名必看!
  5. 微新余微信号ivxinyu✅ 冒死偷拍,对所有人都有益,求扩散!!!
  6. Python实战:导出聊天记录分析你和你的对象聊了什么
  7. maya blend shape
  8. 工作室多wifi软路由工作室Ros软路由使用教程
  9. Android音频子系统(十五)------Audio调试经验
  10. get_price函数定义python_python get()函数