一、format的基本玩法

一、什么是format

format是字符串内嵌(字符串内嵌:字符串中再嵌套字符串,加入双引号或单引号)的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串

format玩法一:按顺序输出(按照{}的顺序依次匹配括号中的值)

  1. >>>s = '年龄 {} ,爱好{},性别 {}'.format18'发呆''男'
  2. >>>print(s)
  3. 年龄18,爱好发呆,性别男

format玩法二:按索引输出

当数据多个重复的时候按索引来:例如以下代码爱好和喜欢相同(都是发呆)且发呆对应索引是1,所以大括号里可以用1来指向要被替换数据(发呆)在format()中的索引

  1. >>>s = '年龄 {0} ,爱好{1},性别 {2},喜欢{1}'.format18'发呆''男'
  2. >>>print(s)
  3. 年龄18,爱好发呆,性别男,喜欢发呆

format玩法三:通过参数名来匹配参数(也叫做使用关键字传递参数)

```
>>>hobby = input('请输入你的爱好:')
>>>s = '年龄{age},爱好{hobby},性别{sex}'.format(hobby = hobby,sex = 男,age = 18)
>>>print(s)
请输入你的爱好:发呆
年龄18,爱好发呆,性别男
```
##format玩法四:通过默认,参数名来混搭进行使用
代码一:

  1. hobby = input('请输入你的爱好:')
  2. s = '爱好{hobby},性别{}'.format('男',hobby = hobby)
  3. print(s)、
  4. 输出结果
  5. 爱好发呆,性别男

format玩法需要注意的常见错误(切记,切记)

错误一
代码一如果写成以下代码就会报错:仔细观察代码二与代码一的区别

代码二:

  1. hobby = input('请输入你的爱好:')
  2. s = '爱好{hobby},性别{}'.format(hobby = hobby,'男')
  3. print(s)
  4. 报错如下:
  5. s = '爱好{hobby},性别{}'.format(hobby = hobby,'男')
  6. ^
  7. SyntaxError: positional argument follows keyword argument

为什么我们将.format(hobby = hobby , '男')更改为.format('男' , hobby = hobby)

就会报错呢??

❣️那是因为命名的参数(变量)必须写到最后。否则会编译报错❣️hobby是我们命名的一个参数所以必须放在最后。

错误二

❣️❣️不可以索引和默认格式化混合使用:

所以以下代码均会报错:

  1. >>>s = '爱好{},性别{1}'.format('发呆','男')
  2. >>>print(s)
  3. 报以下错误:
  4. ValueError: cannot switch from automatic field numbering to manual field specification
  1. >>>s = '爱好{},性别{0}'.format('男','发呆')
  2. >>>print(s)
  3. 报以下错:
  4. ValueError: cannot switch from automatic field numbering to manual field specification

二、format的进阶玩法

玩法五、通过对象的属性(详细见代码注释)

首先我们定义一个函数Names()在函数内定义一个局部变量a

  1. >>>def Names():
  2. >>> a = '周周'
  3. #然后将 a 调用出来做为关键字传参
  4. >>>s = '我叫{names.a}'.format(names = Names)
  5. 我叫周周

玩法六、支持对参数部分引用

可以通过索引对参数的部分进行取值。如:s = '1男生1'我们只需要'男'这一部分我们就可以采用切片s[1]将其切出,再传递到对应部分。

  1. >>>char = '性别{s[1]}'.format(s = '1男生1')
  2. >>>print(char)
  3. 性别男

玩法七、使用format 使结果保留两位小数

一般需要使用 (:. 2f),在用%进行格式化时我们使用的是(%.2f )操作方法如下:

  1. >>>s1 = 'π是{:.2f}'.format(3.1415926)
  2. >>>print(s1)
  3. >>>s2 = 'π是%.2f'% 3.1415926
  4. >>>print(s2)
  5. π是3.14
  6. π是3.14
  7. 同时这种方法还可以用于字符串截取,不过数字后面就不能加f了操作方法如下
  8. #{:1}指截取索引为[0:1]的字符(顾头不顾尾)
  9. s = '性别{:.1}'.format('男生122')
  10. #{:2}指截取索引为[0:2]的字符(顾头不顾尾)
  11. m = '性别{:.2}'.format('男生122')
  12. print(s)
  13. print(m)
  14. 性别男
  15. 性别男生

玩法八、 format中格式的处理

在占位符中还可以有格式化控制符,对字符串的格式进行更加精准 的控制。格式化控制符位于占位符索引或占位符名字的后面,之间用冒号分隔,语法:{参数序号:格式控制符}或{参数名:格式控制符}。字符串的格式化控制符及其说明如下表所示:





操作方法如下表:



  1. >>> format(3.1415936)
  2. '3.1415936'
  3. >>> str(3.1415926)
  4. '3.1415926'
  5. #字符串可以提供的参数,指定对齐方式,<是左对齐, >是右对齐,^是居中对齐
  6. >>>print(format('test', '<20'))
  7. >>>print(format('test', '>20'))
  8. >>>print(format('test', '^20'))
  9. test
  10. test
  11. test
  12. #整形数值可以提供的参数有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
  13. >>> format(3,'b') #转换成二进制
  14. '11'
  15. >>> format(97,'c') #转换unicode成字符
  16. 'a'
  17. >>> format(11,'d') #转换成10进制
  18. '11'
  19. >>> format(11,'o') #转换成8进制
  20. '13'
  21. >>> format(11,'x') #转换成16进制 小写字母表示
  22. 'b'
  23. >>> format(11,'X') #转换成16进制 大写字母表示
  24. 'B'
  25. >>> format(11,'n') #和d一样
  26. '11'
  27. >>> format(11) #默认和d一样
  28. '11'
  29. #浮点数可以提供的参数有 'e' 'E' 'f' 'F' 'g' 'G' 'n' '%' None
  30. >>> format(314159267,'e') #科学计数法,默认保留6位小数
  31. '3.141593e+08'
  32. >>> format(314159267,'0.2e') #科学计数法,指定保留2位小数
  33. '3.14e+08'
  34. >>> format(314159267,'0.2E') #科学计数法,指定保留2位小数,采用大写E表示
  35. '3.14E+08'
  36. >>> format(314159267,'f') #小数点计数法,默认保留6位小数
  37. '314159267.000000'
  38. >>> format(3.14159267000,'f') #小数点计数法,默认保留6位小数
  39. '3.141593'
  40. >>> format(3.14159267000,'0.8f') #小数点计数法,指定保留8位小数
  41. '3.14159267'
  42. >>> format(3.14159267000,'0.10f') #小数点计数法,指定保留10位小数
  43. '3.1415926700'
  44. >>> format(3.14e+1000000,'F') #小数点计数法,无穷大转换成大小字母
  45. 'INF'
  46. #g的格式化比较特殊,假设p为格式中指定的保留小数位数,先尝试采用科学计数法格式化,得到幂指数exp,如果-4<=exp<p,则采用小数计数法,并保留p-1-exp位小数,否则按小数计数法计数,并按p-1保留小数位数
  47. >>> format(0.00003141566,'.1g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点
  48. '3e-05'
  49. >>> format(0.00003141566,'.2g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留1位小数点
  50. '3.1e-05'
  51. >>> format(0.00003141566,'.3g') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留2位小数点
  52. '3.14e-05'
  53. >>> format(0.00003141566,'.3G') #p=1,exp=-5 ==》 -4<=exp<p不成立,按科学计数法计数,保留0位小数点,E使用大写
  54. '3.14E-05'
  55. >>> format(3.1415926777,'.1g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留0位小数点
  56. '3'
  57. >>> format(3.1415926777,'.2g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留1位小数点
  58. '3.1'
  59. >>> format(3.1415926777,'.3g') #p=1,exp=0 ==》 -4<=exp<p成立,按小数计数法计数,保留2位小数点
  60. '3.14'
  61. >>> format(0.00003141566,'.1n') #和g相同
  62. '3e-05'
  63. >>> format(0.00003141566,'.3n') #和g相同
  64. '3.14e-05'
  65. >>> format(0.00003141566) #和g相同
  66. '3.141566e-05'

玩法九、字符填充

可通过(: 符号^数字)进行字符串的填充。 其中数字为填充后的字符串总长度操作如下:

  1. s = "{:*^10}".format('12345')
  2. print(s)
  3. **12345***
  4. s = "{:-^20}".format('123456')
  5. print(s)
  6. -------123456-------

但是如果数字{要求的长度}小于字符串的长度,则不进行填充操作。

  1. #这里要求字符串的长度是3,但是已经是5了,所以不会填充
  2. s = "{:*^3}".format('12345')
  3. print(s)
  4. 12345

玩法十:对列表(list)、字典(dic)的拆分

在format格式化时,可使用* 或者 ** 进行对list、dic拆分。

  1. foods = ['鱼', '虾', '肉']
  2. s = '我爱吃{}和{}和{}'.format(*foods)
  3. print(s)
  4. 我爱吃鱼和虾和肉
  5. foods = ['鱼', '虾', '肉']
  6. s = '我爱吃{2}和{0}和{1}'.format(*foods)
  7. print(s)
  8. 我爱吃鱼和虾和肉
  9. dict_temp = {'爱好':'发呆','姓名':'周周'}
  10. # 字典需要用 ** 进行拆分
  11. s = '我叫{姓名},爱好{爱好}'.format(**dict_temp)
  12. print(s)
  13. 我叫周周,爱好发呆
  14. 结语:

超详细的格式化输出(format的基本玩法)的更多相关文章

  1. day9 字符串格式化输出 % .format()

    常用的格式化输出方式1 % 方式 print("i am %s my hobby is %s" %("yt","eat")) 打印浮点数,. ...

  2. Python格式化输出——format用法示例

    format OR % 提到Python中的格式化输出方法,一般来说有以下两种方式: print('hello %s' % 'world') # hello world print('hello {} ...

  3. print格式化输出(format)

    一. print格式化输出,以及使用format控制 字符串的格式化方法分为两种,分别为占位符(%)和format方式.占位符方式在Python2.x中用的比较广泛,随着Python3.x的使用越来越 ...

  4. python格式化输出 format

    看图

  5. day02格式化输出等

    1.格式化输出     format % 占位符     %s:str, %d: dight, %f: float     字符串多行用三个单引号或三个双引号     %%5,百分之五,转义字符%.想 ...

  6. Python中的格式化输出

    百分号格式化输出 百分号默认右对齐 %s 字符串 (采用str()的显示) %r 字符串 (采用repr()的显示) %c 单个字符 %b 二进制整数 %d 十进制整数 %i 十进制整数 %o 八进制 ...

  7. python文件操作及格式化输出

    1 文件与IO 1.1读写文本数据 读写各种不同的文本数据,如ASCII,UTF-8,UTF-9编码等. 使用带有rt模式的open()函数读取文本文件. 例如: with open('db', 'r ...

  8. 超详细的Xcode代码格式化教程,可自定义样式。

    超详细的Xcode代码格式化教程,可自定义样式. 为什么要格式化代码 当团队内有多人开发的时候,每个人写的代码格式都有自己的喜好,也可能会忙着写代码而忽略了格式的问题.在之前,我们可能会写完代码后,再 ...

  9. python基础_格式化输出(%用法和format用法)(转载)

    python基础_格式化输出(%用法和format用法) 目录 %用法 format用法 %用法 1.整数的输出 %o -- oct 八进制%d -- dec 十进制%x -- hex 十六进制 &g ...

随机推荐

  1. jdbc连接数据库问题

    ### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Fail ...

  2. raid划分及创建

    RAID 的划分 RAID 0 - RAID 0是最早出现的,是数据分条技术.组建磁盘阵列中最简单的一种形式,可以提高整个磁盘的性能和吞吐量,利用率100%,缺点:一但磁盘损坏,raid0将失效,数据 ...

  3. Python制作手游《和平精英》游戏资料查询助手

    写在前面的一些P话: <和平精英>这个游戏想必大家都玩过了,今天来教大家制作一个<和平精英>游戏的资料查询助手 受害者地址: https://gp.qq.com/main.sh ...

  4. 【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示

    前言: MQTT广泛应用于工业物联网.智能家居.各类智能制造或各类自动化场景等.MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信.机器与物联网通信等. ...

  5. Java开发学习(九)----IOC之核心容器

    这里所说的核心容器,大家可以把它简单的理解为ApplicationContext,前面虽然已经用到过,但是并没有系统的介绍过,接下来咱们从以下几个问题入手来下容器的相关知识: 如何创建容器? 创建好容 ...

  6. 反向传播神经网络(BP)

    实验部分: ①输入.输出矢量及问题的阐述 由题意输入变量取值范围为e={-2,-1,0,1,2}和ec={-2,-1,0,1,2},则输入矢量有25种情况,分别如下所示: 则由T=int((e+ec) ...

  7. Android刷第三方Recovery &获取root权限

    一.基础环境 Make sure your computer has working adb and fastboot. Setup instructions can be found here. E ...

  8. day03_3_流程控制练习题

    # 流程控制练习题 # 一.编程题 1.实现一个课程名称和课程代号的转换器:输入下表中的课程代号,输出课程的名称.用户可以循环进行输入,如果输入0就退出系统.(**使用****switch +whil ...

  9. 20220727-Java中多态总结

    目录 方法的多态 对象的多态 多态的注意事项和细节 向下转型 Java动态绑定机制 多态polymorphism:方法或者对象具有多种形态 方法的多态 方法的重载可以体现多态 代码示例 // 通过方法 ...

  10. MySQL客户端工具的使用与MySQL SQL语句

    MySQL客户端工具的使用 1.MySQL程序的组成 客户端 mysql:CLI交互式客户端程序 mycli:CLI交互式客户端程序;使用sql语句时会有提示信息 mysql_secure_insta ...