我们的 Python 基础教程到最后几篇介绍类的文章这里,就暂时告一段落啦(后面如有其他内容会持续更新!!!)
最近我复看之前文章的示例代码、以及我日常编程中写的一些脚本,发现一个很有意思的现象:大家都会用字符串,但 90% 的人只用到了它 30% 的能力。
我们写代码时,无时无刻不在和字符串打交道:输出一句话、接收输入、读取文本文件、爬虫抓取内容……字符串就像 Python 不起眼的“工具人”,却很少被我们研究。
Python学习笔记——从入门到报废(四、变量和数据类型(上))
Python学习笔记——从入门到报废(五、变量和数据类型(下))
所以从今天开始,我们前几篇番外篇,就着重地讲讲 Python 的字符串 —— str。

很多人觉得,字符串就是引号里的文字。没错,但不够深入。
我看来,字符串是有序、不可修改的字符序列。
text = "python番外篇"print(text[0]) # Output: pprint(text[3]) # Output: hprint(text[-1]) # Output: 篇空格、标点符号,在字符串里都会占一个下标,不会被忽略。
text = "hello"# 尝试修改第一个字符text[0] = "H"# Output: TypeError: 'str' object does not support item assignment💡 原因:字符串是不可变数据类型。如果想要修改内容,只能重新生成一个字符串,原字符串会保留在内存里,不被改动。这是 Python 底层为了安全、效率而做出的设计。
创建字符串的方式,我们在前面的基础教程就讲过:单引号、双引号、三引号。
但我们很多时候会乱用引号,不清楚三者的区别:
"You're handsome!";# 双引号嵌套单引号sentence = "我是'Python'爱好者"print(sentence)# 三引号支持换行article = """哈喽大家好这里是Python番外课堂专注拆解小众实用知识点"""print(article)除了三引号,我个人比较喜欢优先用双引号,多数时候都能便于嵌套单引号。
用 str[i:j] 进行截取,表示:
i 到 j 的左闭右开区间(即含 i 不含 j)的字符序列。j,则取 i 到最后一个字符的序列;i,则取第一个字符到 j - 1 字符的序列。word = "abcdefg"# 截取前3个字符print(word[0:3]) # 也可以写为 word[:3]# Output: abc# 倒序截取(负数下标表示从倒数第几位开始截取)print(word[-3:])# Output: efg# 隔一个字符取一个print(word[::2])# Output: aceg# 字符串反转 print(word[::-1]) # Output: gfedcba 拼接用加法 +,重复用乘法 *:
str1 + str2,表示 str2 首字母接到 str1 的末尾。str * k,表示 k 个 str 拼接。a = "Python"b = "番外篇"# 拼接print(a + b)# Output: Python番外篇# 重复3次print(a * 3)# Output: PythonPythonPython这里提醒大家一个误区:字符串只能和字符串拼接,不能直接拼接非字符串内容。例如如下第一行是错的,需写为第二行:
print("年龄:" + 18)print("年龄:" + str(18))本篇内容先到此结束,下一篇我们讲 str 的一些内置函数和其他的一些内容。一次讲太多内容,会增加大家的阅读负担(试图水篇数)。
往期回顾: