Python字符串操作之定义,拼接与格式化详解

 更新时间:2026年06月28日 09:40:48   作者:qqzsq  
本篇深入讲解了Python字符串的三种定义方式、转义符、拼接与格式化,介绍了f-string、format()及格式化方法,助你高效处理字符串操作

自学Python第4天:字符串的三种定义方式、拼接、格式化——我终于搞懂了f"{name}"是什么意思

如果你还记得第二篇的内容,有一行代码是这样的:

print("我叫" + name + ",今年" + age + "岁")

当时我们用 str(age) 解决了报错。但其实有更优雅的方式——不用加号,也不用 str(),一行就能搞定。这个方式就是 f-string。

前几篇我学了变量、数据类型、类型转换和运算符。其实这些东西写来写去,都绕不开一个东西——字符串

第一行代码 print("Hello World") 里有它,变量 name = "张三" 里有它,拼接报错 TypeError 也是因为它。字符串几乎无处不在,但我一直没有正儿八经地学过它。今天就来补上这一课。

一、字符串的三种定义方式

前几篇我只用了双引号,但其实字符串有三种定义方式。

1. 单引号

name = '张三'
print(name)

2. 双引号

name = "张三"
print(name)

3. 三引号(多行字符串)

text = """这是第一行
这是第二行
这是第三行"""
print(text)

单引号和双引号的作用完全一样,那为什么要搞两种呢?那是因为字符串里本身可能包含引号。三引号则用来写多行文本,在写长段落、文档注释时特别方便。

二、引号嵌套

先看一段代码:

text = "I'm a student"
print(text)   # I'm a student

这个能正常运行,因为双引号包住了里面的单引号。

那反过来呢?

text = '他说:"你好"'
print(text)   # 他说:"你好"

单引号包住双引号,也没有问题。

但如果字符串里的引号和外面包的引号是同一个呢?比如:

text = 'I'm a student'   # 报错!

Python 看到 'I' 就以为字符串结束了,结果发现后面跟着 m a student',直接报错。

解决方法一:用另一种引号包住

text = "I'm a student"   # 用双引号包住,里面单引号不用转义

解决方法二:用反斜杠转义

text = 'I\'m a student'   # 用 \' 告诉 Python 这里不是结束,就是一个普通的单引号
print(text)   # I'm a student

转义符 \ 的作用是“取消特殊含义”,原本引号表示字符串的开始和结束,加上 \ 之后,它只是一个普通字符。

三、常见的转义符

在写文件路径的时候,我遇到过一个问题:

path = "C:\Users\name"
print(path)   # 输出:C:\Users

反斜杠不见了,\n 被当成了换行符。后来才知道,反斜杠在字符串里有特殊含义,需要写成 \ 才能输出真正的反斜杠。类似的情况还不少,所以这里把 Python 里常见的转义符整理了一下:

转义符含义示例
'输出单引号print('I'm fine') → I'm fine
"输出双引号print("他说:"你好"") → 他说:"你好"
\n换行print("第一行\n第二行")
\t制表符(相当于按一下 Tab)print("A\tB") → A B
\输出一个反斜杠print("C:\Users") → C:\Users

掌握这些,以后写文件路径、处理文本数据的时候会少很多困惑。

四、字符串拼接

在第二篇里我已经用过+拼接字符串了:

name = "张三"
print("我叫" + name)   # 我叫张三

也可以把多个字符串拼在一起:

first_name = "张"
last_name = "三"
print(first_name + last_name)   # 张三

注意:字符串只能和字符串拼接

age = 18
print("我今年" + age + "岁")   # 报错!

这个坑我第二篇已经踩过了,当时用 str(age) 转成字符串解决了。其实在第二篇,我解决的是一个具体问题;到了这里,我才真正理解“为什么不能拼”以及“除了 + 还有什么替代方式”

age = 18
print("我今年" + str(age) + "岁")   # 我今年18岁

不过,除了 +,Python 还有更好的方式——字符串格式化。

五、字符串格式化

先来看一个场景:

name = "张三"
age = 25
city = "北京"

现在我想打印一句完整的话:"我叫张三,今年25岁,住在北京。"

如果用拼接:

print("我叫" + name + ",今年" + str(age) + "岁,住在" + city)

这样也能做到,但写起来很麻烦,引号和加号混在一起,容易搞乱。

这个时候就需要格式化了。

方式一:f-string(适合Python3.6+)

name = "张三"
age = 25
city = "北京"
print(f"我叫{name},今年{age}岁,住在{city}")
# 我叫张三,今年25岁,住在北京

方式二:format()方法

print("我叫{},今年{}岁,住在{}".format(name, age, city))

{} 是占位符,相当于先留一个空位置,format() 里的值会按顺序填进去。

方式三:%格式化

print("我叫%s,今年%d岁,住在%s" % (name, age, city))

六、数字精度控制

当格式化浮点数(小数)时,我们经常需要控制显示几位小数。

pi = 3.1415926
print(f"{pi:.2f}")   # 3.14(保留两位小数)
print(f"{pi:.3f}")   # 3.142(保留三位小数,四舍五入)
print(f"{pi:.0f}")   # 3(保留零位小数)

格式说明:{变量名:.nf},其中n是要保留的小数位数。

注意: :.2f这种写法目前只在f-string里最常用。如果用format(),写法是"{:.2f}".format(pi);用%方式,写法是"%.2f" % pi。

这在处理价格、成绩、测量数据时特别有用,例如:

price = 19.9
discount = 0.75
final_price = price * discount
print(f"折后价格:{final_price:.2f}元")   # 折后价格:14.92元

七、对表达式进行格式化

f-string的{}里不只是能放变量,还能放表达式

表达式就是可以计算出结果的代码片段。比如 a + b 是一个表达式,结果是两个数相加;age + 1 也是一个表达式,结果是一个新数字。在 f-string 的 {} 里放表达式,Python 会先算出结果,再转成字符串填进去。
例如:

a = 10
b = 20
print(f"{a} + {b} = {a + b}")
# 10 + 20 = 30
name = "张三"
age = 25
print(f"明年我就{age + 1}岁了")
# 明年我就26岁了
score = 85
print(f"你的成绩:{'及格' if score >= 60 else '不及格'}")
# 你的成绩:及格

八、综合示例

把今天学的东西串起来:

# 商品信息
name = "Python书籍"
price = 79.9
discount = 0.75
quantity = 3

# 计算
final_price = price * discount
total = final_price * quantity

# 输出
info = f"""
========== 订单信息 ==========
商品名称:{name}
单价:{price:.2f}元
折扣:{discount * 100:.0f}%
折后单价:{final_price:.2f}元
数量:{quantity}件
总价:{total:.2f}元
=============================
"""
print(info)

运行结果:

========== 订单信息 ==========
商品名称:Python书籍
单价:79.90元
折扣:75%
折后单价:59.92元
数量:3件
总价:179.77元
=============================

小结

今天学的东西,整理成一张速查表:

操作方法示例
单引号定义' 'name = '张三'
双引号定义" "name = "张三"
多行字符串''' ''' 或 """ """text = """多行"""
引号嵌套外双内单 或 外单内双"I'm fine"
转义符\'、\n、\t
字符串拼接+"你好" + "世界"
字符串格式化(推荐)f-stringf"姓名:{name}"
保留 n 位小数:.nff"{pi:.2f}"
格式化表达式f"{a + b}"

下一篇我打算学数据输入(input语句)、布尔类型和比较运算符。

以上就是Python字符串操作之定义,拼接与格式化详解的详细内容,更多关于Python字符串的资料请关注脚本之家其它相关文章!

相关文章

  • Python对Excel进行处理的实操指南

    Python对Excel进行处理的实操指南

    这篇文章主要给大家介绍了关于Python对Excel进行处理的实操指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • keras小技巧——获取某一个网络层的输出方式

    keras小技巧——获取某一个网络层的输出方式

    这篇文章主要介绍了keras小技巧——获取某一个网络层的输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python字符串常用方法

    python字符串常用方法

    这篇文章主要介绍了python字符串常用方法,find、count、replace、split、startswith、endswith等多种方法,需要的朋友可以参考一下文章得具体内容,希望对你有所帮助
    2021-10-10
  • Python调用graphviz绘制结构化图形网络示例

    Python调用graphviz绘制结构化图形网络示例

    今天小编就为大家分享一篇Python调用graphviz绘制结构化图形网络示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python游戏测试工具自动化遍历游戏中所有关卡

    python游戏测试工具自动化遍历游戏中所有关卡

    这篇文章主要为大家介绍了python游戏测试工具自动化遍历游戏中所有关卡示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Python导入Excel表格数据并以字典dict格式保存的操作方法

    Python导入Excel表格数据并以字典dict格式保存的操作方法

    本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法,感兴趣的朋友一起看看吧
    2023-01-01
  • python 包之 re 正则匹配教程分享

    python 包之 re 正则匹配教程分享

    这篇文章主要介绍了python 包之 re 正则匹配教程分享,文章基于python 包 re的相关资料展开贵主题的详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 通过python-pptx模块操作ppt文件的方法

    通过python-pptx模块操作ppt文件的方法

    这篇文章主要介绍了通过python-pptx模块操作ppt文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,本文给大家介绍的需要的朋友可以参考下
    2020-12-12
  • Spring异常处理 bug的问题记录(同一份代码,结果却不一样)

    Spring异常处理 bug的问题记录(同一份代码,结果却不一样)

    这篇文章主要介绍了Spring异常处理 bug的问题记录(同一份代码,结果却不一样)的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-05-05
  • Python中的Django视图与路由

    Python中的Django视图与路由

    本文给大家介绍Python中的Django视图与路由的相关操作,我们就从基础概念到实战代码,一步步拆解Django视图与路由的核心知识点,感兴趣的朋友一起看看吧
    2025-09-09

最新评论