首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python3.6 的三种字符串处理,formatting、str.format()、f-string

python3.6 的三种字符串处理,formatting、str.format()、f-string

作者头像
鳄鱼儿
发布于 2024-05-21 08:51:21
发布于 2024-05-21 08:51:21
57500
代码可运行
举报
运行总次数:0
代码可运行

📝 主旨内容

Python 3.6之前,有两种将Python表达式嵌入到字符串文本中进行格式化的主要方法:%-formattingstr.format()

从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快!

在后文中f-string被称为F字符串。

先说下%-formattingstr.format() 的使用,以及它们的局限性。

1️⃣ %-formatting 方法

%-formatting是Python早期的一种格式化字符串的方法,使用起来繁琐且容易出错,如无法正确显示元组和字典的情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print("Hello, %s. You are %s." % (name, age))

# Hello, Ber. You are 18.

如果需要使用的参数过多,代码就变得不易阅读了,甚至感觉凌乱。并且这种方式不支持元组或字典。

2️⃣ str.format() 方法

str.format()方法是对%-formatting的改进,是python2.6引入的,能够更灵活地处理字符串格式化,并且支持索引、命名参数等功能,使用正常的函数调用语法,可以通过对要转换为字符串的对象的__format __()方法进行扩展。

我们通过如下示例演示了如何使用str.format()来格式化字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print("Hello, {}. You are {}.".format(name, age))

# Hello, Ber. You are 18.

默认规则是顺序索引嵌入字符串,也可以通过索引改变嵌入字符串的次序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print("Hello, {1}. You are {0}. Your sister is {0}.".format(age, name))

# Hello, Ber. You are 18. Your sister is 18.

将索引改为变量名也是可以的,但必须在format()引用参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print("Hello, {name}. You are {age}.".format(age=age, name=name))

# Hello, Ber. You are 18. 

如果采用字典定义,则可以通过**来实现参数引用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
person = {
		name : "Ber",
		age : 18
}
print("Hello, {name}. You are {age}.".format(**person))

# Hello, Ber. You are 18. 

3️⃣ f-string 方法

f-string 方法也可以称为格式化字符串,F字符串是开头有一个f的字符串文字,以及包含表达式的大括号将被其值替换。表达式在运行时进行渲染,然后使用__format__协议进行格式化。

语法与str.format()使用的语法类似,但不需要结尾补充.format()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print(f"Hello, {name}. You are {age}.")

# Hello, Ber. You are 18. 

f 改为 F 也是生效的。

由于f字符串是在运行时进行渲染的,因此可以将任何有效的Python表达式放入其中。如计算、函数调用,甚至可以创建对象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name = "Ber"
age = 18
print(f"Hello, {name.lower()}. You are {age+1}.")

# Hello, ber. You are 19. 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class User:
    def __init__(self, first_name, last_name, age):
        self.first_name = first_name
        self.last_name = last_name
        self.age = age

    def __str__(self):
        return f"{self.first_name} {self.last_name} is {self.age}."

    def __repr__(self):
        return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"

new_user = User("Ber", "Pai", "18")
print(f"{new_user}")
print(f"{new_user!r}")

# Ber Pai is 18.
# Ber Pai is 18. Surprise!

__str __()__repr __()方法在Python中用于定义对象如何呈现为字符串形式。在类定义中,至少应该包含其中一个方法。如果只能选择一个,建议使用__repr __(),因为它可以替代__str __()方法。

  • __str __()方法返回的字符串应该是对象的非正式表示形式,通常更易读。它用于提供对象的人类可读版本。
  • __repr __()方法返回的字符串应该是对象的官方表示形式,更加明确。它用于提供对象的机器可读版本。调用str()repr()函数比直接使用__str __()__repr __()方法更好,因为能够获得更加标准化的输出。

在f-string中,默认情况下会使用__str __()方法来格式化对象,但如果在f-string中使用转换标志!r,则会强制使用__repr __()方法来表示对象。

多行文字可以使用三重引号"""来表示,这种表示方法使得可以跨越多行书写较长的文本内容,方便阅读和管理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
message = f"""
    Hi {name}.
    You are {age}.
    Your sister is {age}.
 """

# \n    Hi Ber. \n    You are 18. \n    Your sister is 18.\n

注意

在使用F字符串需要注意: 1.如果在字典键周围使用与在F字符串外部使用相同类型的引号,则第一个字典键开头的引号将被解释为字符串的结尾。 2.如果字符串本身有大括号,为了使字符串出现大括号,必须使用双大括号。 3.F字符串可以使用反斜杠转义符,但是不能在F字符串的表达式部分中使用。 4.lambda表达式,如果! : } 不在括号中,会被解释为表达式结尾,需要在 () 中定义lambda表达式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【重磅】JimuReport 积木报表 v2.0 版本发布,免费可视化报表
JEECG
2025/06/09
1460
强!一款贼好用的低代码报表工具,开源免费!
今天给大家推荐一款免费的数据可视化报表设计工具:JimuReport,类似excel操作风格,在线拖拽完成报表设计!项目号称:功能永久免费、可以商用、永久免费使用!
测试开发技术
2024/04/17
4150
JimuReport 积木报表 v1.9.5发布,免费的可视化报表
JEECG
2025/03/28
2540
【新年版】JimuReport 积木报表 v1.9.4发布,免费报表、打印设计和视化设计
JEECG
2025/02/20
2040
免费的可视化Web报表工具,JimuReport v1.5.0-beta版本发布
项目介绍 积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的! 当前版本:v1.5.0-beta | 2022-04-18 集成依赖 <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-
JEECG
2022/04/18
6120
JimuReport积木报表 v1.6.4 稳定版本正式发布—开源免费的低代码报表
JEECG
2023/10/16
5320
积木报表·JimuReport 1.3.64 版本发布,免费的企业级可视化报表工具
项目介绍 积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的!!! 当前版本:v1.3.64-beta | 2021-07-13 集成依赖 <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>spring-boot
JEECG
2021/07/15
1.6K0
积木报表·JimuReport 1.3.64 版本发布,免费的企业级可视化报表工具
【全新改版升级】JimuReport 积木报表 v1.9.0 版本发布,填报和大屏
此次版本改动较大,完善了填报功能支持行表格、一对多、查询填报等高级填报功能;支持共享数据集;整体界面大改版,使用体验更加简便;仪表盘提供大屏能力,支持黑色主题风格;
JEECG
2024/11/04
4940
JimuReport v1.6.1版本发布,修复 Freemarker 模板注入高危漏洞
JEECG
2023/08/16
4470
【免费开源】积木报表ElasticSearch数据集使用实战
积木报表 JimuReport,是一款免费的数据可视化报表,含报表、大屏和仪表盘,像搭建积木一样完全在线设计!功能涵盖:数据报表、打印设计、图表报表、门户设计、大屏设计等!
JEECG
2025/05/12
1030
【免费开源】积木报表文件数据集使用实战
积木报表 JimuReport,是一款免费的数据可视化报表,含报表、大屏和仪表盘,像搭建积木一样完全在线设计!功能涵盖:数据报表、打印设计、图表报表、门户设计、大屏设计等!
JEECG
2025/05/12
1160
JimuReport积木报表1.1.05 版本发布,免费的企业级 Web 报表工具
项目介绍 积木报表,是一款免费的企业级Web报表工具,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。 当前版本:v1.1.05 | 2021-01-15 #资料下载 示例代码: https://github.com/zhangdaiscott/JimuReport 马上体验: http://www.j
JEECG
2021/01/21
9680
JimuReport 积木报表 v1.7.6 补正版发布,免费的低代码报表
JEECG
2024/06/20
1850
JimuReport积木报表 v1.6.0版本发布—免费的可视化报表
JEECG
2023/08/16
5990
JimuReport积木报表 v1.7.0 变革版本发布,报表工具
JEECG
2024/02/19
2480
免费的可视化Web报表工具,JimuReport v1.4.4-beta版本发布
项目介绍 积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的! 当前版本:v1.4.4-beta | 2022-03-21 集成依赖 <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-
JEECG
2022/03/21
7470
低代码报表,JimuReport积木报表 v1.4.0版本发布,免费的可视化数据产品
项目介绍 积木报表,一款免费的可视化Web报表工具,像搭建积木一样在线拖拽设计!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的! 当前版本:v1.4.0 | 2021-11-01 集成依赖 <dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-boot-
JEECG
2021/11/01
9100
低代码报表,JimuReport积木报表 v1.4.0版本发布,免费的可视化数据产品
开源仪表盘,积木仪表盘 v1.8.1 版本发布
JEECG
2024/09/26
1980
低代码可视化报表-积木报表,JimuReport v1.5.2版本发布
项目介绍一款免费的低代码可视化报表,像搭建积木一样在线拖拽设计!低代码开发必备,功能涵盖,数据报表、打印设计、图表报表、大屏设计等!秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题,完全免费的!当前版本:v1.5.2 | 2022-07-11集成依赖<dependency> <groupId>org.jeecgframework.jimureport</groupId> <artifactId>jimureport-spring-boot-starte
JEECG
2022/07/11
8540
JimuReport积木报表 v1.5.8版本发布—免费的数据可视化报表
项目介绍一款免费的数据可视化报表,含报表和大屏设计,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等!Web 版报表设计器,类似于excel操作风格,通过拖拽完成报表设计。秉承“简单、易用、专业”的产品理念,极大的降低报表开发难度、缩短开发周期、节省成本、解决各类报表难题。领先的企业级Web报表软件,采用纯Web在线技术,专注于解决企业报表快速制作难题。当前版本:v1.5.8 | 2025-05-11专注于开源,打造“专业 易用 智能 低代码”的数据可视化工具开源协议:`功能永
JEECG
2023/05/12
8300
推荐阅读
【重磅】JimuReport 积木报表 v2.0 版本发布,免费可视化报表
1460
强!一款贼好用的低代码报表工具,开源免费!
4150
JimuReport 积木报表 v1.9.5发布,免费的可视化报表
2540
【新年版】JimuReport 积木报表 v1.9.4发布,免费报表、打印设计和视化设计
2040
免费的可视化Web报表工具,JimuReport v1.5.0-beta版本发布
6120
JimuReport积木报表 v1.6.4 稳定版本正式发布—开源免费的低代码报表
5320
积木报表·JimuReport 1.3.64 版本发布,免费的企业级可视化报表工具
1.6K0
【全新改版升级】JimuReport 积木报表 v1.9.0 版本发布,填报和大屏
4940
JimuReport v1.6.1版本发布,修复 Freemarker 模板注入高危漏洞
4470
【免费开源】积木报表ElasticSearch数据集使用实战
1030
【免费开源】积木报表文件数据集使用实战
1160
JimuReport积木报表1.1.05 版本发布,免费的企业级 Web 报表工具
9680
JimuReport 积木报表 v1.7.6 补正版发布,免费的低代码报表
1850
JimuReport积木报表 v1.6.0版本发布—免费的可视化报表
5990
JimuReport积木报表 v1.7.0 变革版本发布,报表工具
2480
免费的可视化Web报表工具,JimuReport v1.4.4-beta版本发布
7470
低代码报表,JimuReport积木报表 v1.4.0版本发布,免费的可视化数据产品
9100
开源仪表盘,积木仪表盘 v1.8.1 版本发布
1980
低代码可视化报表-积木报表,JimuReport v1.5.2版本发布
8540
JimuReport积木报表 v1.5.8版本发布—免费的数据可视化报表
8300
相关推荐
【重磅】JimuReport 积木报表 v2.0 版本发布,免费可视化报表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验