Python .format()函数使用方法详解

目录
  • format函数的调用
  • format函数及其占位符的调用格式
  • 占位符以及参数设定
    • position/key
    • fill参数
    • align参数
    • sign参数
    • width参数
    • precision参数
    • precision-type参数
  • 总结

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'

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

https://www.jb51.net/article/226500.htm

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详解Python中的format格式化函数的使用方法

    format函数实现字符串格式化的功能 基本语法为: 通过 : 和 {} 来控制字符串的操作 一.对字符串进行操作 1. 不设置指定位置,按默认顺序插入 ①当参数个数等于{}个数的时候 str_1 = "小明{}小美,可是小美{}小明".format("喜欢", "不喜欢") print(str_1) 运行结果: ②当参数个数大于{}个数的时候 str_1 = "小明{}小美,可是小美{}小明".format("喜欢

  • Python通过format函数格式化显示值

    英文文档: format(value[, format_spec]) Convert a value to a "formatted" representation, as controlled by format_spec. The interpretation of format_spec will depend on the type of the value argument, however there is a standard formatting syntax that

  • 浅析python3字符串格式化format()函数的简单用法

     format()函数 """ 测试 format()函数 """ def testFormat(): # format()函数中有几个元素,前面格式化的字符串中就要有几个 '{}' # 位置 s1 = 'a{}b{}c{}d{}'.format(1, 2, 3, 4) # 索引,format()函数中的元素,从0开始 s2 = 'a{0}b{1}c{3}d{2}'.format(1, 2, 3, 4) # 索引可以重复使用 s3 = 'a{0}

  • python中format函数如何使用

    Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % . format 函数可以接受不限个参数,位置可以不按顺序. 例如 >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world' >>> "{0} {1}".for

  • Python format函数详谈

    目录 Python字符串的format函数 总结 Python字符串的format函数 format()函数用来收集其后的位置参数和关键字段参数,并用他们的值填充字符串中的占位符.通常格式如下: '{pos or key : fill, align, sign, 0, width, .precision, type}'.format(para1...) 整个花括号是一个占位符,冒号前的位置或者关键字用来定位format函数的参数,冒号后面用来将该参数格式化,其中每一个都是可选项. 1.fill用

  • python中强大的format函数实例详解

    python中format函数用于字符串的格式化 自python2.6开始,新增了一种格式化字符串的函数str.format(),此函数可以快速处理各种字符串. 语法 它通过{}和:来代替%. 请看下面的示例,基本上总结了format函数在python的中所有用法 #通过位置 print '{0},{1}'.format('chuhao',20) print '{},{}'.format('chuhao',20) print '{1},{0},{1}'.format('chuhao',20) #

  • Python .format()函数使用方法详解

    目录 format函数的调用 format函数及其占位符的调用格式 占位符以及参数设定 position/key fill参数 align参数 sign参数 width参数 precision参数 precision-type参数 总结 format函数的调用 format函数可以被直接调用或在print函数中以占位符实现格式化调用. 在**2.6**版本前,占位符仍和其他语言一样使用%(比如C中).但在其后的版本,format函数的占位符更改为{}(花括号). 优化的目的目前总结出了4个: 1

  • python super函数使用方法详解

    一.super函数简介 python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系:但是,使用 super() 是一个好的习惯.一般我们在子类中需要调用父类的方法时才会这么用: 二.super函数语法 super(type,object-or-type) 参数: type - 类,一般是类名: object-or-type - 类,一般是 self: 返回值:无 三.super函数使用 1.案例一: # !usr/bin/env

  • 对Python实现累加函数的方法详解

    这个需求比较奇怪,要求实现Sum和MagaSum函数,实现以下功能 Sum(1) =>1 Sum(1,2,3) =>6 MegaSum(1)() =>1 MegaSum(1)(2)(3)() =>6 实际上Sum就是Python自建的sum函数,它支持变参,变参怎么实现,自然是*args,所以很容易写出雏形: Sum def Sum(*args): count = 0 for i in args: count+=i return count 第二个函数就有点皮了,它要求有参数的时候

  • Python学习之循环方法详解

    目录 for循环 while循环 拓展:列表推导式 常见的推导式方法 循环的继续与退出(continue与break) continue的使用 break的使用 循环实现九九乘法表 什么是循环? —> 循环是有着周而复始的运动或变化的规律:在 Python 中,循环的操作也叫做 ‘遍历’ . 与现实中一样,Python 中也同样存在着无限循环的 方法与有限循环的方法.接下来我们就先看看有限循环的方法 —> for 循环 for 循环 for 循环的功能:通过 for 关键字将列表.元组.字符串

  • Python生成随机数的方法详解(最全)

    目录 使用 random 模块 使用 NumPy 库 使用 secrets 模块 使用 random.org 网站 使用 random.choices()方法 python生成随机数都有哪些办法呢 使用 random 模块:random模块是python内置的模块,使用方法如random.randint()生成一个随机整数. 使用 NumPy 库:NumPy 是一个强大的数值计算库,它提供了生成随机数的功能,例如numpy.random.randint()生成一个随机整数. 使用 secrets

  • Python 私有函数的实例详解

    Python 私有函数的实例详解 与大多数语言一样,Python 也有私有的概念: • 私有函数不可以从它们的模块外面被调用 • 私有类方法不能够从它们的类外面被调用 • 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字. 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的:其它所有的都是公有的. Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中).类方

  • Python进阶-函数默认参数(详解)

    一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 while n > 0: r *= x n -= 1 return r 这样在调用pow函数时,就可以省略最后一个参数不写: print(pow(5)) # output: 25 在定义有默认参数的函数时,需要注意以下: 必选参数必须在前面,默认参数在后: 设置何种参数为默认参数?一般来说,将参数值变化小的设置为默认参数. python标准库实践 python内建函数: prin

  • Python Lambda函数使用总结详解

    这篇文章主要介绍了Python Lambda函数使用总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的对应关系 定义func函数,计算给定数x的平方 def func(x): return x*x 等价于 func = lambda x: x

  • Python sep参数使用方法详解

    这篇文章主要介绍了Python sep参数使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中sep不是函数,它是print函数的一个参数,用来定义输出数据之间的间隔符号. 具体用法如下: 同时打印多个字符串的时候,每个字符串都会自动默认以空格作为每个字符串之间的间隔. print("abc", "uuu", "oop") # abc uuu oop 如果在多个字符串的最后

  • C语言system函数使用方法详解

    目录 函数接口 作用 返回值 测试代码 参数 MODE命令 color命令 函数接口 _DCRTIMP int __cdecl system( _In_opt_z_ char const* _Command ); system函数已经被收录在标准c库中,头文件为<stdlib.h> 作用 执行系统命令调用命令处理器来执行命令. 如果命令是空指针,则该函数只检查是否有命令处理器可以被此函数使用. 命令非空则调用命令的效果取决于系统和库的实现,并可能导致程序以非标准的方式运行或终止. 补充: 执行

随机推荐