首页 > 其他分享 >format用法详解

format用法详解

时间:2022-11-22 06:33:06浏览次数:65  
标签:Boy name format s1 用法 详解 Tom print

format是字符串内嵌的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串。

1、基本用法

1. 按照{}的顺序依次匹配括号中的值
s = "{} is a {}".format('Tom', 'Boy')
print(s) # Tom is a Boy

s1 = "{} is a {}".format('Tom')
# 抛出异常, Replacement index 1 out of range for positional args tuple
print(s1)
 
2. 通过索引的方式去匹配参数
s = "{0} is a {1}".format('Tom', 'Boy')
print(s) # Tom is a Boy

s1 = "{1} is a {2}".format('Tom', 'Lily', 'Girl')
print(s1) # Lily is a Girl

 

字符串中索引的顺序可以打乱,并不影响匹配。

s = "{1} is a {0}".format('Boy', 'Tom', )
print(s) # Tom is a Boy
 
3. 通过参数名来匹配参数
s = "{name} is a {sex}".format(name='Tom', sex='Boy')
print(s) # Tom is a Boy
 

 

同理,如果参数已经确定,可以直接利用{}进行格式化引用。

name = 'Tom'
sex = 'Girl'
# 以f开头表示在字符串中支持大括号内的python表达式   此用法3.6之后支持
s = f"{name} is a {sex}"
print(s) # Tom is a Boy
4. 混搭使用

可以通过索引,参数名来混搭进行匹配。

s = "My name is {}, i am {age} year old, She name is {}".format('Liming', 'Lily', age=10)
print(s) # My name is Liming, i am 10 year old, She name is Lily

需要注意的是,命名参数必须写道最后。负责会编译报错!

s = "My name is {}, i am {age} year old, She name is {}".format('Liming', age=10, 'Lily')
print(s)  # SyntaxError: positional argument follows keyword argument

另外,不可以索引和默认格式化混合使用。

s = "{} is a {0}".format('Boy', 'Tom', )
print(s)


s1 = "{} is a {1}".format('Boy', 'Tom', )
print(s1)

#以上两种写法均报异常。
# ValueError: cannot switch from automatic field numbering to manual field specification
  

2、进阶用法

1. 通过对象的属性
class Names():
    name1='Kevin'
    name2='Tom'
print 'hello {names.name1} i am {names.name2}'.format(names=Names) 
# hello Kevin i am Tom
 
2. 支持对参数部分引用

可以通过索引对参数的部分进行取值。如下:s[0] = w。

s = "The word is {s}, {s[0]} is initials".format(s='world')
# The word is world, w is initials
print(s)
 
3. 数字的处理

如何使用format 保留两位小数呢? 需要使用:.2f,在用%进行格式化时我们使用的是%:.2f

s = 'π is {:.2f}'.format(3.1415926)
print(s) # π is 3.14

s1 = 'π is %.2f'% 3.1415926
print(s1) # π is 3.14
 

同时这种方法还可以用于字符串截取,不过数字后面就不能加f了。

s = "{:.1}".format('Hello')
print(s) # H 
 

给数字加千位符

s = "{:,}".format(1000000)
print(s) # 1,000,000
 

将数字转换成二进制

s = "{:b}".format(8)
print(s) # 1000
 

将数字转换成八进制

s = "{:o}".format(8)
print(s) # 10
 

将数字转换成十六进制

s = "{:X}".format(12)
print(s) # C
 
4. 格式处理

通过:+数字指定转换后的字符串长度,不足的部分用空格补充

s = "{:2}b".format('a')
print(s) # a b  (a后面补了一个空格)
# 如果指定的长度小于参数的长度,按照原参数匹配
s1 = "{:2}World".format('Hello')
print(s1) # HelloWorld
 
5. 字符的填充

可通过:符号^数字进行字符串的填充。 其中数字为填充后的字符串总长度。

s = "{:*^10}".format('Hello')
print(s) # **Hello***

s = "{:-^20}".format('123456')
print(s) # -------123456-------
 

如果数字小于字符串的长度,则不进行填充操作。

s = "{:*^3}".format('Hello')
print(s) # Hello
 
6. list、tuple的拆分

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

foods = ['fish', 'beef', 'fruit']
s = 'i like eat {} and {} and {}'.format(*foods)
# i like eat fish and beef and fruit
print(s)

foods = ['fish', 'beef', 'fruit']
s = 'i like eat {2} and {0} and {1}'.format(*foods)
# i like eat fruit and fish and beef
print(s)

dict_temp = {'name': 'Lily', 'age': 18} 
# 字典需要用 ** 进行拆分
s = 'My name is {name}, i am {age} years old'.format(**dict_temp)
print(s) # My name is Lily, i am 18 years old
   

标签:Boy,name,format,s1,用法,详解,Tom,print
From: https://www.cnblogs.com/clark1990/p/16913991.html

相关文章

  • .compareTo用法
    一.java中的compareto方法1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值String a1 = “a”;String a2 =......
  • WordPress主题开发全面详解-黄棒清-专题视频课程
    WordPress主题开发全面详解—87人已学习课程介绍        WordPress主题开发全面详解视频教程会运用HTML,CSS,PHP和JavaScript来构建动态WordPress网站。在本课程中,我......
  • 使用DocumentFormat.OpenXml 从Excel 导入数据
    publicList<DailyStock>ReadExcelFile(stringfileName){List<DailyStock>list=newList<DailyStock>();DataTabledt=ReadExcelFileToDataTable(fi......
  • CNETOS LINUX 计划任务详解
    r.sh复制代码tamcdir=HOME/ora/userprojects/domains/tamccd{tamcdir}echorm-f​​​lsheapdump*.phd​​​rm-fheapdump*.phdechorm-f​​​lsjavacore*......
  • 深度优先生成树和广度优先生成树的详解版
    其实在对无向图进行遍历的时候,遍历过程中所经历过的图中的顶点和边的组合,就是图的生成树或者生成森林。图1无向图 例如,图1中的无向图是由V1~V7的顶点和编号分......
  • 关于Linux中网络方面的命令用法(持续更新)
    ifconfig概述ifconfig工具被用来查看和配置网络接口配置信息。用ifconfig命令配置的网卡信息,在网络设备重启后,配置就会还原。要想将修改的配置信息永远的存的电脑里,那就......
  • Day18.1:构造器详解
    构造器详解构造器也叫构造方法,是创造对象时调用的方法我们建立一个类时,即使我们什么都没开始写,我们可以看到其反编译文件中已经出现了一个方法,这个方法就是构造方法浅谈......
  • 修复 docker build 错误 "-t, --tag" flag: invalid reference format
    问题今天构建镜像时遇到一个错误:原因排查且也经过试验,应该是docker的镜像tag不允许包含/、#字符。解决调整一下生成docker镜像tag的方案,或者是简单粗暴地......
  • Pod控制器详解(StatefulSet)
    StatefulSet(有状态)概述无状态应用:认为Pod都是一样的。没有顺序要求。不用考虑在哪个Node节点上运行。随意进行伸缩和扩展。有状态应用:有顺序的要求。认为每个......
  • RDMA 架构与实践(技术详解(一):RDMA概述)
    RDMA,即RemoteDirectMemoryAccess,是一种绕过远程主机OSkernel访问其内存中数据的技术,概念源自于DMA技术。在DMA技术中,外部设备(PCIe设备)能够绕过CPU直接访问......