format是字符串内嵌的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串,一定程度上与%目的一致。但在某些方面更加的方便

1、基本用法

1、按照{}的顺序依次匹配括号中的值

  1. s = "{} is a {}".format('Tom', 'Boy')
  2. print(s) # Tom is a Boy
  3. s1 = "{} is a {}".format('Tom')
  4. # 抛出异常, Replacement index 1 out of range for positional args tuple
  5. print(s1)

2、通过索引的方式去匹配参数

这里需要注意的是,索引从0开始计算。

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

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

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

3、通过参数名来匹配参数

  1. s = "{name} is a {sex}".format(name='Tom', sex='Boy')
  2. print(s) # Tom is a Boy

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

  1. name = 'Tom'
  2. sex = 'Girl'
  3. # 以f开头表示在字符串中支持大括号内的python表达式
  4. s = f"{name} is a {sex}"
  5. print(s) # Tom is a Boy

4、混搭使用

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

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

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

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

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

  1. s = "{} is a {0}".format('Boy', 'Tom', )
  2. print(s)
  3. s1 = "{} is a {1}".format('Boy', 'Tom', )
  4. print(s1)

以上两种写法均报异常。

  1. # ValueError: cannot switch from automatic field numbering to manual field specification

2、进阶用法

1、支持对参数部分引用

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

  1. s = "The word is {s}, {s[0]} is initials".format(s='world')
  2. # The word is world, w is initials
  3. print(s)

2、数字的处理

普通的直接匹配数字没什么好说的,与基础部分的字符串匹配一样。

  1. s = 'π is {}'.format(3.1415926)
  2. print(s) # π is 3.1415926

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

  1. s = 'π is {:.2f}'.format(3.1415926)
  2. print(s) # π is 3.14
  3. s1 = 'π is %.2f'% 3.1415926
  4. print(s1) # π is 3.14

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

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

给数字加千位符

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

将数字转换成二进制

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

将数字转换成八进制

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

将数字转换成十六进制

  1. s = "{:X}".format(12)
  2. print(s) # C

总结如下

  • b: 输出整数的二进制方式;
  • c: 输出整数对应的 Unicode 字符;
  • d: 输出整数的十进制方式;
  • o: 输出整数的八进制方式;
  • x: 输出整数的小写十六进制方式;
  • X: 输出整数的大写十六进制方式;

3、格式处理

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

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

4、字符的填充

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

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

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

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

5、list、tuple的拆分

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

  1. foods = ['fish', 'beef', 'fruit']
  2. s = 'i like eat {} and {} and {}'.format(*foods)
  3. # i like eat fish and beef and fruit
  4. print(s)
  1. foods = ['fish', 'beef', 'fruit']
  2. s = 'i like eat {2} and {0} and {1}'.format(*foods)
  3. # i like eat fruit and fish and beef
  4. print(s)
  1. dict_temp = {'name': 'Lily', 'age': 18}
  2. # 字典需要用 ** 进行拆分
  3. s = 'My name is {name}, i am {age} years old'.format(**dict_temp)
  4. print(s) # My name is Lily, i am 18 years old

史上最全Python资料汇总(长期更新)。隔壁小孩都馋哭了 --- 点击领取

一文秒懂!Python字符串格式化之format方法详解的更多相关文章

  1. Python中格式化format()方法详解

    Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参 ...

  2. python中requests库使用方法详解

    目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...

  3. Python操作SQLite数据库的方法详解

    Python操作SQLite数据库的方法详解 本文实例讲述了Python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简单介绍 SQLite数据库是一款非常小巧的嵌入式开 ...

  4. python字符串格式化之format

    用法: 它通过{}和:来代替传统%方式 1.使用位置参数 要点:从以下例子可以看出位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表 ...

  5. (转)Python 字符串格式化 str.format 简介

    原文:https://www.cnblogs.com/wilber2013/p/4641616.html http://blog.konghy.cn/2016/11/25/python-str-for ...

  6. python 字符串格式化 ( 百分号 & format )

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. ----百分号 tpl = ...

  7. python中os模块函数方法详解最全最新

    os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 import os print(os.getcwd()) os.chdir("dirname") 改 ...

  8. Python学习笔记:魔术方法详解

    准备工作 为了确保类是新型类,应该把 _metaclass_=type 入到你的模块的最开始. class NewType(Object): mor_code_here class OldType: ...

  9. python的内置模块re模块方法详解以及使用

    正则表达式 一.普通字符 .     通配符一个.只匹配一个字符 匹配任意除换行符"\n"外的字符(在DOTALL模式中也能匹配换行符 >>> import re ...

随机推荐

  1. python爬取链家二手房信息,确认过眼神我是买不起的人

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  2. 精心总结ansible-playbook剧本的这6种变量

    #变量作用 #根据需求灵活修改,如:需要安装不同版本号的服务,或进行版本升级回退等 1.通过vars定义变量 #1.1.定义一个变量 version: 1.1.2 #定义多个变量 vars: - v1 ...

  3. Spring 系列之jdbcTemplate的使用

    Spring系列之 jdbcTemplate 啥是jdncTemplate? t他是spring框架中提供的一个对象,是对原始的jdbcAPI对象的简单封装,spring框架为我们提供了很多操作,模板 ...

  4. 阿里内部推出Spring响应式微服务Boot2Cloud文档

    今天要给大家推荐的是Spring响应式微服务SpringBoot2+Spring5+SpringCloud实战的内容,将从目录.主要内容和面向的读者三部分给大家介绍,希望大家能够喜欢!!!(本文整理自 ...

  5. 在Linux系统下搭建和配置一个minio文件服务器(二)

    上一篇主要讲述了在linux系统中搭建一个minio文件服务器,那么这一篇则用来整合java代码中使用,我之前自己已经搭建好了一个springboot项目,那么这一篇将详细讲述如何把minio整合进s ...

  6. 摊牌了!我要手写一个“Spring Boot”

    目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping .@PostMapping .@PathVariable 写完了.我也已经将项目开源出来了,地址:https://gi ...

  7. django rest_framework serializer的ManyRelatedField 和 SlugRelatedField使用

    class BlogListSerializer(serializers.Serializer): id = serializers.IntegerField() user = BlogUserInf ...

  8. 【题解】一本通例题 S-Nim

    \(\color{purple}{Link}\) \(\text{Solution:}\) 这个题就是给\(Nim\)游戏做了一个限制. 考虑一下\(\text{SG}\)函数:给定的局面下对应的\( ...

  9. Apache账户密码加密方式介绍

    一.apache密码存储格式 apache的用户密码一般会生成保存在.htpasswd文件中,保存路径由用户创建时确定,根据使用加密算法有五种保存格式: [注]:如果用户指定了保存密码的文件名,视用户 ...

  10. Oracle 数据库导入数据和编码问题

    配置 control 文件: load data characterset utf8 append into table role_res_gold fields terminated by ';' ...