“小白专属”python字符串处理文档

下面这份"小白专属"文档,只假设你会打字、知道 Python 文件怎么运行,其他一律从头讲起。

读完你能做到:

  1. 明白「字符串」在 Python 里到底是什么;

  2. 会"切"字符串------想拿哪段拿哪段;

  3. 会"搜"字符串------想找什么就找什么;

  4. 会"换"字符串------想怎么改就怎么改;

  5. 会"拼"字符串------把变量、表达式优雅地塞进文本;

  6. 知道常见坑(中英文引号、转义、不可变等)长什么样;

  7. 有一份"速查表"以后秒翻。

文档里所有代码都可以直接复制到 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)

​

六、查找子串

  1. 返回索引

Python

python 复制代码
​
s = "hello world"
print(s.find("lo"))     # 3  找不到返回 -1
print(s.index("lo"))    # 3  找不到抛 ValueError

​
  1. 返回布尔

Python

python 复制代码
​
print("lo" in s)        # True
print("lol" in s)       # False

​
  1. 统计出现次数

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


八、分割与拼接

  1. 分割 → 列表

Python

python 复制代码
​
csv = "apple,banana,pear"
lst = csv.split(",")
print(lst)              # ['apple', 'banana', 'pear']

​
  1. 拼接 ← 列表

Python

python 复制代码
​
new = "-".join(lst)
print(new)              # apple-banana-pear

​
  1. 直接拼变量(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%

​

十三、常见坑速览

  1. 中英文引号混用会报错:

    错误 "hello" → 正确 "hello"

  2. 路径反斜杠要转义:
    path = "C:\\new\\test.txt"

    或直接用原始字符串:
    path = r"C:\new\test.txt"

  3. 字符串不可变,所以 s[2]="X" 直接报错。

  4. 切片越界不报错,静默返回空串:
    "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 分钟小练习(答案文末)

  1. 让用户输入一个邮箱,判断是不是以 @gmail.com 结尾。

  2. "2025-12-01" 变成 "12/01/2025"

  3. 统计用户输入的一段英文里有多少个单词(提示:先 split())。

  4. 给定字符串 "aabbbcccca",输出去重后的顺序字符:"abca"

  5. "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))

​

十七、下一步往哪走?

  1. 正则表达式:import re ------ 想怎么搜就怎么搜;

  2. 字符串常量:import string ------ 自带所有字母、标点;

  3. 文本清洗实战:爬网页 → 去 HTML 标签 → 正则提电话/邮箱;

  4. 性能:百万次拼接用 "".join(list) 而不要用 +

  5. 国际化:Unicode、编码(UTF-8/GBK)与 encode/decode

把上面的小练习全部自己敲一遍,你就已经脱离"纯小白"行列了!加油~

相关推荐
FAREWELL0007535 分钟前
Lua学习记录(5) --- Lua中的协同程序 也称线程Coroutine的介绍
开发语言·学习·lua
☆光之梦☆39 分钟前
《openGauss全密态与防篡改账本数据库:云上数据安全与可信的新范式》
数据库·python
Maya动画技术39 分钟前
python的py转pyd方法(cython)
开发语言·python·spring
找了一圈尾巴40 分钟前
Python 学习-深入理解 Python 进程、线程与协程(上)
python·学习·并发
ZAz_40 分钟前
DAY 26 机器学习流水线
python
276695829241 分钟前
雷池waf 逆向
java·开发语言·前端·python·wasm·waf·雷池waf
Highcharts.js1 小时前
Highcharts 金融图表之“点线图 ”讲解
java·开发语言·highcharts·金融点线图·点线图·模块安装
星轨初途1 小时前
C++的条件判断与循环及数组(算法竞赛类)
开发语言·c++·经验分享·笔记·算法
Keep__Fighting1 小时前
【机器学习:线性回归】
人工智能·python·算法·机器学习·支持向量机·线性回归·scikit-learn