Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python中格式化字符串的几种方法,你用对了吗?
以上当变量的个数较少时,使用 % 操作符格式化字符串的可读性还是比较强的。但是当变量的个数变多时,可读性会变差,并且容易出错。例如:
mr.songw
2021/01/19
4480
Python中格式化字符串的几种方法,你用对了吗?
【Python入门第五讲】字符串(下篇)
前面介绍了常用类的函数相关操作,详细内容请前往 【Python入门第四讲】字符串(上篇)阅读。
不惑
2024/01/23
2980
【Python入门第五讲】字符串(下篇)
【Python3】f-string——s
f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’或F’xxx’),以大括号{}标明被替换的字段。f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式。         f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。
py3study
2020/01/13
1.2K0
🤖 Python f-string 全攻略:从入门到大师,让你的编码效率翻倍!
f-string 是 Python 3.6 引入的一种字符串格式化方法。通过在字符串前加 f 或 F 前缀,直接在 {} 中嵌入变量或表达式。相比传统的 % 格式化和 str.format() 方法,f-string 执行速度更快,并且支持复杂的格式化操作,如数字精度控制、对齐、日期格式化等,甚至可用于代码调试。
张高兴
2025/05/27
1600
🤖 Python f-string 全攻略:从入门到大师,让你的编码效率翻倍!
Python格式字符串的三种方法你都掌握了吗,%s%d%f+format()+f-string,深度测评YYDS实至名归
前言: 在我们日常的学习中,我们总是免不了和各种输入输出打交道,而在这其中输出更是重中之重,有时候就因为输出的格式不对,或者说语法用的不正确,往往会导致最后的结果不尽如人意。以及各种输出的奇葩要求往往搞的我们头大,那今天就由Dream带大家来实际测评和总结一下各种格式化字符串方法吧,赶快为你喜欢的方法种草吧~
润森
2022/09/22
1.3K0
Python格式字符串的三种方法你都掌握了吗,%s%d%f+format()+f-string,深度测评YYDS实至名归
Python学习,字符串格式化方法不止%和farmat,还有f-string
一说起字符串格式化,我们脑海里最先出现的必然是%和format,但是在python3.6之后,又更新了一种更快更便捷的方法,那就是f-string!它是由PEP 498 所带来的全新的一种方法,全称是“Literal String Interpolation”。
云飞
2018/09/14
6880
Python字符串三种格式化输出
format是python2.6新增的一个格式化字符串的方法,相比%格式化方法有如下优点:
吾非同
2020/10/23
1.3K0
Python格式化字符串f-string概览
f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化方法,该方法源于PEP 498 – Literal String Interpolation,主要目的是使格式化字符串的操作更加简便。f-string在形式上是以 f 或 F 修饰符引领的字符串(f'xxx' 或 F'xxx'),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式:
全栈程序员站长
2022/06/28
9140
python3.6 的字符串处理f-string的使用技巧
上一篇文章我们提到了f-string(F字符串)的使用,以及另两种python字符串处理方式。
鳄鱼儿
2024/05/21
3010
这几个冷门但实用的 Python 技巧你知道吗?
这篇文章主要和大家分享一些 Python 不一样的技巧,感受 Python 带给你的乐趣吧。
Crossin先生
2019/08/21
4370
这几个冷门但实用的 Python 技巧你知道吗?
Python中最快的格式化字符串方式
第一种是传承自C语言printf函数的使用%占位符格式化字符串,如'%d' % 100,这种方式严格来说是使用%作为算数运算符进行的二元运算,而且有一个限制是只能进行数字和字符串的格式化输出。
杜逸先
2018/08/29
2K0
Python3.6的新特性f-string和新字典
应该大多数的写Python的都知道这个特性,所以这篇文章是给不知道的同学写的,知道的就跳过吧。
andrew_a
2019/07/30
1.1K0
Python3.6的新特性f-string和新字典
你还在用 format 格式化字符串?
提到格式化字符串,我想大家应该都要磨拳擦掌了,但是 Python 3.6 带来了一种更为简洁,更加 Pythonic的方式,今天就带大家见识一下~
TTTEED
2020/07/08
6440
python数据类型-字符串
哈喽大家好!歪小王又来分享了,今天开始,我将以一种幽默有趣的方式,跟大家一起重温下python基础
歪小王
2024/04/22
1460
python数据类型-字符串
Python输出格式全总结
有几种方法可以显示程序的输出;数据可以以人类可读的形式打印出来,或者写入文件以供将来使用。本章将讨论一些可能性。
py3study
2020/01/16
1.1K0
你真的了解Python中的f-string吗?别把自己骗了,来看看这篇全网最全的Python的f-string教程,字符串格式化让你的代码更加易读高效
f-string 的基本语法非常简单,只需在字符串前加上一个小写的 f 或大写的 F,然后在字符串内部使用花括号 {} 来包含变量或表达式。例如:
小白的大数据之旅
2024/11/20
1.3K0
Python90-4 使用f-字符串替代C风格字符串和str.format
字符串贯穿Python的始终。可以用来在用户界面呈现信息和命令行工具。可以用来写入数据到文件和sockets。可以用来描述异常。用来debug。 格式化(Formatting) 字符串是将预先定义的文本和数据值结合成可读的信息,存储在字符串中。Python有4种格式化字符串方法(C风格字符串,模板,str.format和f-字符串。也可以将模板方法当成是C风格字符串的改进)。
一只大鸽子
2022/12/06
4320
【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)
【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取
Qomolangma
2024/07/30
2450
【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)
python格式化输出:f-string格式化输出
  python3.6引入了一种新的字符串格式化方式:f-tring格式化字符串。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些,使用起来也比前两个简单一些。
朱小五
2020/04/21
4.8K0
python格式化输出:f-string格式化输出
Python精讲 | 超好用的f-string和Python3.12的新增特性
上个月,Python发布了3.12版本,新增了一些特性,并且提升了效率。这个在之前文章中有提过:Python3.12发布,性能提升5%
Crossin先生
2023/11/22
5090
Python精讲 | 超好用的f-string和Python3.12的新增特性
推荐阅读
相关推荐
Python中格式化字符串的几种方法,你用对了吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验