
如果你还记得第二篇的内容有一行代码是这样的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 Im a student print(text) # Im a student这个能正常运行因为双引号包住了里面的单引号。那反过来呢text 他说你好 print(text) # 他说你好单引号包住双引号也没有问题。但如果字符串里的引号和外面包的引号是同一个呢比如text Im a student # 报错Python 看到 I 就以为字符串结束了结果发现后面跟着 m a student直接报错。解决方法一用另一种引号包住text Im a student # 用双引号包住里面单引号不用转义解决方法二用反斜杠转义text I\m a student # 用 \ 告诉 Python 这里不是结束就是一个普通的单引号 print(text) # Im a student转义符 \ 的作用是“取消特殊含义”原本引号表示字符串的开始和结束加上 \ 之后它只是一个普通字符。三、常见的转义符在写文件路径的时候我遇到过一个问题path C:\Users\name print(path) # 输出C:\Users反斜杠不见了\n 被当成了换行符。后来才知道反斜杠在字符串里有特殊含义需要写成 \ 才能输出真正的反斜杠。类似的情况还不少所以这里把 Python 里常见的转义符整理了一下转义符含义示例输出单引号print(Im fine) → Im fine输出双引号print(他说你好) → 他说你好\n换行print(第一行\n第二行)\t制表符相当于按一下 Tabprint(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岁住在北京