参考链接: 使用Python 3的f字符串进行字符串格式化

3种字符串格式化工具的简单介绍

python2.5版本之前,我们使用的是老式字符串格式化输出%s。

从python3.0版本开始起(python2.6同期发布),Python中同时支持两个版本的格式化,多出来的一个新版本就是利用format()函数,进行格式化输出。

但是python3.6版本后,又引入了一种新的字符串格式化方式f-string。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个更简单一些。

3种字符串格式化工具的应用对比

1)基本用法

这里首先先介绍这3个工具的基本用法,基本格式如下。

%格式化:占位符%,搭配%符号一起使用;format()格式化:占位符{},搭配format()函数一起使用;f-string格式化:占位符{},搭配f符号一起使用;

① 对比使用,观察各自的特点

a = "%s张飞、%s关羽、%s刘备、%s赵云" % (1,2,3,4)

display(a)

b  = "{}张飞、{}关羽、{}刘备、{}赵云".format(1,2,3,4)

display(b)

c  = f"{1}张飞、{2}关羽、{3}刘备、{4}赵云"

display(c)

结果如下:

② %格式化

此种方式只支持固定形式的格式化填充,给的顺序和填充顺序完全一致。

a = "四大天王:%s、%s、%s、%s" % ("刘德华","郭富城","张学友","黎明")

print(a)

结果如下:

③ format()格式化

此种方式不仅支持固定形式的格式化填充,还支持位置格式化填充,即共有三种形式。

第一种方式:固定形式的格式化填充,给的顺序和填充顺序完全一致。第一种方式:大括号{ }中写的是format()传入值所对应的下标。第二种方式:大括号{ }中的变量,和format()传入值是一一对应的。

# 第一种形式

b1 = "四大天王:{}、{}、{}、{}".format("刘德华","郭富城","张学友","黎明")

print(b1)

# 第二种形式

b2 = "四大天王:{2}、{0}、{3}、{1}".format("刘德华","郭富城","张学友","黎明")

print(b2)

# 第三种形式

x1 = "刘德华"

x2 = "郭富城"

x3 = "张学友"

x4 = "黎明"

b3 = "四大天王:{p}、{q}、{r}、{s}".format(p=x4,q=x2,r=x1,s=x3)

print(b3)

结果如下:

④ f-string格式化

此种方式的填充,用起来更加随意,直接在{}中输入变量即可,极其方便,我们用一个简单的案例看看。

# 直接在{}中输入变量即可,位置随意放

x1 = "刘德华"

x2 = "郭富城"

x3 = "张学友"

x4 = "黎明"

c = f"四大天王:{x1}、{x3}、{x2}、{x4}"

print(c)

结果如下:

3)填充功能对比

首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。

概念:当指定了字符串最终的长度,但是现有的字符串没有那么长,那么我们就用某种字符(填充字符)来填满至这个长度,这就是“填充”。

① %格式化

格式:"%10s" % (“字符串”),使用前仔细观察书写格式;含义:上述10代表字符串的填充长度。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;注意:此种填充,默认是在字符串左侧填充;

a = "%s" % ("黄同学")

print(a,len(a))

b = "%10s" % ("黄同学")

print(b,len(b))

c = "%10s" % ("黄同学,我早上吃了一碗热干面")

print(c,len(c))

结果如下:

② format()格式化

格式:"{:10}".format(“字符串”),使用前仔细观察书写格式;含义:上述10代表字符串的填充长度。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;注意:此种填充,默认是在字符串右侧填充;

a = "{:10}".format("黄同学")

print(a,len(a))

b = "{:10}".format("黄同学")

print(b,len(b))

c = "{:10}".format("黄同学,我早上吃了一碗热干面")

print(c,len(c))

结果如下:

③ f-string格式化

格式:f"{name1:10}",使用前仔细观察书写格式;含义:上述10代表字符串的填充长度,name1代表某个字符串变量。如果字符串的长度,大于填充长度,填充长度无效;如果字符串的长度,小于填充长度,则会将字符串长度填充至指定的填充长度;注意:此种填充,默认是在字符串右侧填充;

name1 = "黄同学"

name2 = "黄同学,我早上吃了一碗热干面"

a = f"{name1:10}"

print(a,len(a))

b = f"{name2:10}"

print(b,len(b))

结果如下:

3)对齐功能对比

首先我们要知道填充的概念是什么,只有知道了它的概念,才能够灵活运用。

概念:"对齐"要与"填充"一起使用,才会显得有意义。当我们进行填充的时候,我们可以选择只在字符串左侧填充,也可以选择只在字符串右侧填充,还可以选择在字符串两侧填充(字符串居中显示的填充方式);

① %s:实现对齐功能,只有左对齐和右对齐;

# 左填充

a = '%10s' % ('黄同学')

print(a,len(a))

# 右填充

b = '%-10s' % ('黄同学')

print(b,len(b))

结果如下:

② format():实现对齐功能,不仅有左对齐和右对齐,还有居中对齐;

# 左填充

a = '{:>10}'.format('黄同学')

print(a,len(a))

# 右填充

b = '{:<10}'.format('黄同学')

print(b,len(b))

# 居中填充

c = '{:^10}'.format('黄同学')

print(c,len(c))

结果如下:

③ f-string:实现对齐功能,不仅有左对齐和右对齐,还有居中对齐;

name = "黄同学"

a = f"{name:>10}"

print(a,len(a))

b = f"{name:<10}"

print(b,len(b))

c = f"{name:^10}"

print(c,len(c))

结果如下:

4)使用“任意符号”完成填充功能

这个知识点必须在讲完填充和对齐后,才能为大家演示。其实没有为什么,就是语法是这样的,我们就必须这样做。

① %格式化

旧版语法的%格式化,使用"特定符号"填充,很麻烦,不直接,你也不用去管。这里主要看新版语法中format()格式化和f-string格式化,进行"特定符号"填充。

② format()格式化

# 左填充

a = '{:_>10}'.format('黄同学')

print(a,len(a))

# 右填充

b = '{:_<10}'.format('黄同学')

print(b,len(b))

# 居中填充

c = '{:_^10}'.format('黄同学')

print(c,len(c))

结果如下:

③ f-string格式化

name = "黄同学"

a = f"{name:_>10}"

print(a,len(a))

b = f"{name:_<10}"

print(b,len(b))

c = f"{name:_^10}"

print(c,len(c))

结果如下:

5)与“数字”相关的格式化填充技巧

① 你有必要了解的知识

经过前面的学习和叙述,我们已经知道这3种方法,都是完成字符串格式化的操作的,但是为何它们又可以填充数字呢?

原因:Python自动帮我们做了一次隐式转换,但是这种隐式转换是需要付出代价的,它会消耗额外的性能,牺牲速度。因此我们有特定的语法去解决这个问题。

② %格式化

%s表示填充字符串;%d表示填充整数;%f表示填充小数;

完成整数的填充:

# 仅仅使用%s,既可以完成字符串的填充,又可以完成数字的填充

a = '%s' % (3000)

print(a)

a1 = '%s' % ("3000")

print(a1)

# 当使用了%d后,只可以填充数字,不能填充字符串,否则会报错

# 使用%d填充整数,是推荐写法

b = '%d' % (3000)

print(b)

b1 = '%d' % ("3000")

print(b1)

结果如下:  完成浮点数的填充:

a = '%.2f' % (3.1415926)

print(a)

b = '%.3f' % (3.1415926)

print(b)

结果如下:

③ format()格式化

完成整数的填充:

# 不指定d符号,既可以完成字符串的填充,又可以完成数字的填充

a = '{:$>5}'.format(3000)

print(a)

a1 = '{:$>5}'.format("3000")

print(a1)

# 当指定了d符号后,只可以填充数字,不能填充字符串,否则会报错

# 使用符号d填充整数,是推荐写法

b = '{:¥>5d}'.format(3000)

print(b)

b1 = '{:¥>5d}'.format("3000")

print(b1)

结果如下:  完成浮点数的填充:

a = '{:.2f}'.format(3.14159268)

print(a)

b = '{:.3f}'.format(3.14159268)

print(b)

结果如下:

④ f-string格式化

完成整数的填充:

num1 = 3000

num2 = "3000"

# 不指定d符号,既可以完成字符串的填充,又可以完成数字的填充

a = f'{num1}'

print(a)

a1 = f'{num2}'

print(a1)

# 当指定了d符号后,只可以填充数字,不能填充字符串,否则会报错

# 使用符号d填充整数,是推荐写法

b = f'{num1:d}'

print(b)

b1 = f'{num2:d}'

print(b1)

结果如下:  完成浮点数的填充:

num = 3.14159268

a = f'{num:.2f}'

print(a)

b = f'{num:.3f}'

print(b)

结果如下:

[转载] 深度测评Python的3种“字符串格式化”方法,看看你喜欢哪一种?相关推荐

  1. python的三种字符串格式化方法

    刚入门python的同学,特别是,没有系统的学习过python,而是学过别的语言,直接上手python的同学,怕是还不是很了解python强大的字符串格式化方法 1.最方便的 print 'hello ...

  2. Python 3.6.x字符串格式化方法小结

    1  使用%符号进行格式 使用%符号进行字符串格式化的形式如下图所示,格式运算符%之前的部分为格式字符串,之后的部分为需要进行格式化的内容. Python支持大量的格式字符,下表列出了比较常用的一部分 ...

  3. 深度对比Python的3种“字符串格式化”方法,看看你喜欢哪一种?

    3种字符串格式化工具的简单介绍 python2.5版本之前,我们使用的是老式字符串格式化输出%s. 从python3.0版本开始起(python2.6同期发布),Python中同时支持两个版本的格式化 ...

  4. python格式化字符串_Python的3种字符串格式化方法,哪种你最喜欢?

    文末扫二维码领[Python开源项目包] 赠书×大厂笔面试题:秋招一直当炮灰?提升你实力的机会来了! 黄伟呢 | 作者数据分析与统计学之美 | 来源 1 3种字符串格式化工具的简单介绍 python2 ...

  5. Python基础入门:3种字符串格式化方法教程

    有时候我们需要把一些变量填写到一个字符串中,如我们有3个变量 name="张三" gender="男" age="21" 假如我需要把它们放 ...

  6. python3中format方法_[翻译]python3中新的字符串格式化方法-----f-string

    从python3.6开始,引入了新的字符串格式化方式,f-字符串. 这使得格式化字符串变得可读性更高,更简洁,更不容易出现错误而且速度也更快. 在本文后面,会详细介绍f-字符串的用法. 在此之前,让我 ...

  7. python字符串出栈方法_说说Python有几种字符串格式化?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  8. python字符串格式化方法 format函数的使用

    python从2.6开始支持format,新的更加容易读懂的字符串格式化方法, 从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序号, ...

  9. 第3.8节 Python百分号占位符的字符串格式化方法

    一.    概念         格式化字符串就是将一些变量转换为字符串并按一定格式输出字符串,包括指定字符的位置.对齐方式.空位补充方式等.Python提供了多种字符串格式设置方法.本节先介绍一种简 ...

最新文章

  1. 参与2011年7月13日举行的Azure国际猜拳锦标赛,赢取5,000美元大奖
  2. bootstrap 固定最底部_bootstrap 固定底部导航自适应
  3. Eclipse中单元测试
  4. 树状数组的相关知识 及 求逆序对的运用
  5. linux部署Oracle数据库--安装篇
  6. discuz! 7.2 manyou插件暴路径Get Webshell 0day
  7. pytorch之batch_size
  8. 技术管理 - 思维导图(补)
  9. go语言 mysql时间对比_go时间比较 - Go语言中文网 - Golang中文社区
  10. 照片变老html源码,变老教程,利用ps把年轻人变成老年人效果
  11. 知行:程序员如何保持二者的平衡
  12. pyqt5——splitter
  13. 古代奥运会创始人是谁?
  14. 鬼吹灯java攻略_密室逃脱鬼吹灯攻略完美过关图文详解
  15. Redis基本应用及Java代码实现
  16. KT148A语音芯片ic工作原理以及芯片的内部架构描述
  17. 华科_图形学笔记_05_初探造型技术_02
  18. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering 论文阅读
  19. 矩阵论-线性空间与线性变换(一)
  20. 20均线和60均线的关系和看点

热门文章

  1. Eclipse关闭无用validation
  2. 【宝塔】【cloudreve】挂载阿里云OSS到ECS服务器内网上
  3. 【POJ3461】Oulipo(字符串Hash)
  4. c语言双精度型输出小数位数_4.1 C语言数据的输出
  5. JavaScript的for in语法遍历对象的属性(1)
  6. 任意阶幻方解法及c++实现
  7. vs无法启动程序 系统找不到指定文件_进不了系统时要做的事情
  8. 操作系统—基本分页存储管理的基本概念
  9. UnityShader11:纹理属性
  10. 3376: [Usaco2004 Open]Cube Stacking 方块游戏(带权并查集)