首页 > 编程语言 >python中format的详解

python中format的详解

时间:2022-10-23 22:55:58浏览次数:47  
标签:Boy name format python 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'
s = f"{name} is a {sex}"                                # 以f开头表示在字符串中支持大括号内的python表达式 此用法3.6之后支持
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')                         
print(s)                                                         # The word is world, w is initials

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)
print("i like eat {} and {} and {}".format(foods[0],foods[1],foods[2])) # i like eat fish and beef and fruit
print("------")
print(s) # i like eat fish and beef and fruit

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

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

 

————————————————
转载于:https://blog.csdn.net/qq_42855293/article/details/118480087

标签:Boy,name,format,python,s1,详解,Tom,print
From: https://www.cnblogs.com/jiangsheng3/p/16819494.html

相关文章

  • Python入门练习(Question3)
    完全平方数题目一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?解答defsolution3():n=10whileTrue:n+=1......
  • 十分钟带你搞懂Python获取网页信息
    Python爬虫的用处就不需要我多说了吧,今天就来带大家十分钟快速学会Python是如何爬取网页信息的,当然大家在爬取目标网页内容之前一定要遵守该网页的爬虫规则,以免带来不必要的......
  • python学习第四周总结
    异常常见类型异常处理语法结构异常补充处理异常处理实战应用生成器对象自定义生成器range()功能yield冷门用法生成器表达式模块简介模块的分......
  • python控制台颜色输出设置
    python控制台颜色输出设置控制台输出内容的颜色有前景色与背景色控制台的展示效果有限,并不能像前端一样炫酷,只能做一些简单的设置原理python终端的字符颜色是用转义序......
  • 写给小朋友的Python课
    目录 基本常识什么是Python?python是众多编程语言中的一种。为什么python会在这个时代流行?python简单、易学、表示方式更像人类的表示方式、符合人类的思维方式;另外,它......
  • 异常处理与python内置模块
    异常常见类型syntaxError语法错误NameError当你引用了变量、模块、类、函数或代码中没有定义的其他名称时,将引发NameErrorIndexError当你尝试从序列(如列表或......
  • SpringMVC框架详解
    简述SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring FrameWork的后续产品,已经融合在SpringWebFlow里面。Spring......
  • Python最速下降法实例
    最速下降法的实现需要通过符号计算。首先笔算一步如下,然后通过程序验证: python程序如下,需要pipinstallsympy:importnumpyasnpfromsympyimport*importmath......
  • ParserWarning: Falling back to the 'python' engine because the 'c' engine does n
    Python3.9.10,Window64bit   警告:ParserWarning:Fallingbacktothe'python'enginebecausethe'c'enginedoesnotsupportregexseparators(separators......
  • Python实验报告(第7周)
    实验7:面向对象程序设计一、实验目的和要求1、了解面向对象的基本概念(对象、类、构造方法);2、学会类的定义和使用;3、掌握属性的创建和修改;4、掌握继承的基本语法。 ......