下面这份"小白专属"文档,只假设你会打字、知道 Python 文件怎么运行,其他一律从头讲起。
读完你能做到:
-
明白「字符串」在 Python 里到底是什么;
-
会"切"字符串------想拿哪段拿哪段;
-
会"搜"字符串------想找什么就找什么;
-
会"换"字符串------想怎么改就怎么改;
-
会"拼"字符串------把变量、表达式优雅地塞进文本;
-
知道常见坑(中英文引号、转义、不可变等)长什么样;
-
有一份"速查表"以后秒翻。
文档里所有代码都可以直接复制到 demo.py 里跑,建议边读边改,报错就是学习信号。
一、字符串到底是什么?
在 Python 里,只要被引号包起来的就是字符串(str 类型)。引号 3 种写法完全等价:
Python
python
a = '单引号'
b = "双引号"
c = """三引号可以换行
也可以不用转义"和' """
验证类型:
Python
python
print(type(a)) # <class 'str'>
二、字符串是"不可变"的
任何"修改"操作,其实都是生成新字符串,原串纹丝不动。
Python
python
s = "hello"
t = s.upper() # 变大写
print(s) # hello,原串没变
print(t) # HELLO,新串
三、提取单个字符:索引
索引从 0 开始,负数代表"倒数"。
Python
python
word = "Python"
print(word[0]) # P
print(word[-1]) # n
四、提取子串:切片(slice)
模板:s[起点:终点:步长]
终点"不包括",步长可省,默认 1;步长负值可倒序。
Python
python
s = "abcdefg"
print(s[2:5]) # cde
print(s[:3]) # abc(起点省)
print(s[3:]) # defg(终点省)
print(s[::-1]) # gfedcba,反转神器
五、长度与遍历
Python
python
s = "hello"
print(len(s)) # 5
for ch in s: # 逐字符打印
print(ch)
六、查找子串
- 返回索引
Python
python
s = "hello world"
print(s.find("lo")) # 3 找不到返回 -1
print(s.index("lo")) # 3 找不到抛 ValueError
- 返回布尔
Python
python
print("lo" in s) # True
print("lol" in s) # False
- 统计出现次数
Python
python
print(s.count("l")) # 3
七、替换子串
Python
python
s = "I like java"
t = s.replace("java", "Python")
print(t) # I like Python
注意:原串 s 依旧没变,只是新生成 t。
八、分割与拼接
- 分割 → 列表
Python
python
csv = "apple,banana,pear"
lst = csv.split(",")
print(lst) # ['apple', 'banana', 'pear']
- 拼接 ← 列表
Python
python
new = "-".join(lst)
print(new) # apple-banana-pear
- 直接拼变量(3 种主流写法)
Python
python
name = "小白"
age = 18
# ① 最简洁 f-string(Python 3.6+)
info = f"{name} 明年就 {age + 1} 岁了"
print(info)
# ② format 方法
info2 = "{} 明年就 {} 岁了".format(name, age + 1)
# ③ 百分号(旧式)
info3 = "%s 明年就 %d 岁了" % (name, age + 1)
九、去除空白/指定字符
Python
python
s = " 你好 \t\n "
print(s.strip()) # "你好"
print(s.lstrip()) # 去左
print(s.rstrip()) # 去右
url = "www.example.com"
print(url.strip("wcom")) # .example.
十、大小写相关
Python
python
s = "DataScience"
print(s.upper()) # DATASCIENCE
print(s.lower()) # datascience
print(s.title()) # Datascience
print(s.swapcase()) # dATAsCIENCE
十一、字符串判断
Python
python
"123".isdigit() # True
"abc".isalpha() # True
"abc123".isalnum() # True
"Hello".istitle() # True
" ".isspace() # True
十二、格式化进阶:对齐、补零、百分比
Python
python
print(f"{3.1415:.2f}") # 3.14
print(f"{7:0>3}") # 007
print(f"{0.25:%}") # 25.000000%
print(f"{0.25:.1%}") # 25.0%
十三、常见坑速览
-
中英文引号混用会报错:
错误
"hello"→ 正确"hello" -
路径反斜杠要转义:
path = "C:\\new\\test.txt"或直接用原始字符串:
path = r"C:\new\test.txt" -
字符串不可变,所以
s[2]="X"直接报错。 -
切片越界不报错,静默返回空串:
"abc"[10:20]返回""
十四、速查表(建议收藏)
表格
| 功能 | 示例代码 | 备注 |
|---|---|---|
| 长度 | len(s) |
|
| 索引 | s[i] / s[-1] |
负数倒数 |
| 切片 | s[a:b:c] |
终点不包含 |
| 反转 | s[::-1] |
|
| 查找 | s.find(t) / t in s |
|
| 替换 | s.replace(old,new) |
返回新串 |
| 分割 | s.split(sep) |
|
| 拼接 | sep.join(list) |
|
| 去空白 | s.strip() |
|
| 变大写 | s.upper() |
|
| 格式化 | f"{x:.2f}" |
十五、5 分钟小练习(答案文末)
-
让用户输入一个邮箱,判断是不是以
@gmail.com结尾。 -
把
"2025-12-01"变成"12/01/2025"。 -
统计用户输入的一段英文里有多少个单词(提示:先
split())。 -
给定字符串
"aabbbcccca",输出去重后的顺序字符:"abca"。 -
把
"Python"变成"P-y-t-h-o-n"。
十六、答案
Python
python
mail = input("邮箱:")
print(mail.endswith("@gmail.com"))
Python
python
d = "2025-12-01"
m, day, yr = d.split("-")
print(f"{m}/{day}/{yr}")
Python
python
text = input("英文:")
print(len(text.split()))
Python
python
s = "aabbbcccca"
out = ""
for ch in s:
if out == "" or ch != out[-1]:
out += ch
print(out)
Python
python
word = "Python"
print("-".join(word))
十七、下一步往哪走?
-
正则表达式:
import re------ 想怎么搜就怎么搜; -
字符串常量:
import string------ 自带所有字母、标点; -
文本清洗实战:爬网页 → 去 HTML 标签 → 正则提电话/邮箱;
-
性能:百万次拼接用
"".join(list)而不要用+; -
国际化:Unicode、编码(UTF-8/GBK)与
encode/decode。
把上面的小练习全部自己敲一遍,你就已经脱离"纯小白"行列了!加油~