Python 学习笔记(第四期)——字符串:格式化、操作与文本处理——核心知识点自测与详解

Python 学习笔记(第四期)------字符串:格式化、操作与文本处理------核心知识点自测与详解

本自测解析针对 Python 学习笔记系列第四期(字符串:格式化、操作与文本处理)的核心内容。共 10 题,每题包含题目回顾、考查知识点、详细解答与分析,帮助读者巩固 Python 字符串处理的核心技能。
文章索引:

Python 学习笔记(第四期)------字符串:格式化、操作与文本处理

更多自我检测系列欢迎浏览:每日知识点小问答

我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~

第四期:字符串(第 1-5 题)

题目一:字符串的定义与转义字符

题目 :Python 中定义字符串有哪三种方式?分别适用于什么场景?请写出转义字符 \n\t\\ 的作用,并说明原始字符串(raw string)的使用场景。

考查知识点
  • 字符串的三种定义方式 ------ 第四期 §1.1
  • 转义字符 ------ 第四期 §1.2
  • 原始字符串 ------ 第四期 §1.3
详细解答

三种定义方式及适用场景

定义方式 语法 适用场景
单引号 '内容' 定义单行字符串,内部可包含双引号
双引号 "内容" 定义单行字符串,内部可包含单引号
三引号 '''内容'''"""内容""" 定义多行字符串,保留换行格式
python 复制代码
# 单引号与双引号互相嵌套
print('她说:"你好!"')      # 外部单引号,内部双引号
print("let's go")            # 外部双引号,内部单引号

# 三引号保留换行格式
poem = """
床前明月光,
疑是地上霜。
"""
print(poem)

转义字符表

转义字符 含义 示例
\n 换行 "第一行\n第二行"
\t 横向制表符(Tab) "姓名\t年龄"
\\ 反斜杠本身 "C:\\Users\\"
\' 单引号 'It\'s ok'
\" 双引号 "She said \"Hi\""

原始字符串(raw string)

在字符串引号前加 rR,反斜杠不再具有转义功能,全部按原样输出。常用于文件路径和正则表达式。

python 复制代码
# 普通字符串:反斜杠需要转义
path = "C:\\Users\\Admin\\Documents"

# 原始字符串:反斜杠原样输出
raw_path = r"C:\Users\Admin\Documents"
print(raw_path)   # C:\Users\Admin\Documents

# 正则表达式中的妙用
import re
pattern = r"\d{3}-\d{4}-\d{4}"   # 不用写 \\d

题目二:三种字符串格式化方式的对比

题目:Python 有哪三种字符串格式化方式?请分别写出使用示例,并从语法简洁度、性能、表达式支持三个维度对比它们的优劣。在实际开发中应该优先选择哪种?

考查知识点
  • % 格式化 ------ 第四期 §2.1
  • format() 方法 ------ 第四期 §2.2
  • f-string 格式化 ------ 第四期 §2.3
详细解答

三种格式化方式对比

对比维度 % 格式化 format() f-string
引入版本 Python 1.x Python 3.0 Python 3.6
语法简洁度 一般(需记忆格式符) 较好 最简洁
表达式支持 ❌ 不支持 ✅ 支持 完全支持
性能 较慢 中等 最快
可读性 一般 较好 最好

使用示例

python 复制代码
name = "Tom"
age = 20
pi = 3.14159

# 1. % 格式化(传统方式)
print("姓名:%s,年龄:%d岁" % (name, age))
print("圆周率:%.2f" % pi)

# 2. format() 方法(通用方式)
print("姓名:{},年龄:{}岁".format(name, age))
print("姓名:{n},年龄:{a}".format(n=name, a=age))
print("圆周率:{:.2f}".format(pi))

# 3. f-string(现代方式,Python 3.6+)
print(f"姓名:{name},年龄:{age}岁")
print(f"明年{age + 1}岁")
print(f"圆周率:{pi:.2f}")

实际开发建议

场景 推荐方式 原因
日常开发 f-string 语法最简洁、性能最好、可读性最强
动态构建格式化模板 format() 模板内容来自配置文件或数据库时更灵活
维护 Python 3.5 及更早版本 % 格式化 兼容旧版本

题目三:字符串的查找与替换

题目 :请写出以下代码的输出,并说明 find()replace() 方法的作用及返回值。

python 复制代码
text = "Python is a powerful programming language"

# 查找
pos1 = text.find("powerful")
pos2 = text.find("Java")
pos3 = text.find("a", 15)
pos4 = text.find("a", 10, 20)

print(pos1, pos2, pos3, pos4)

# 替换
text2 = "hello world hello python"
new_text = text2.replace("hello", "hi")
new_text_limit = text2.replace("hello", "hi", 1)

print(new_text)
print(new_text_limit)
考查知识点
  • find() 方法 ------ 第四期 §3.1
  • replace() 方法 ------ 第四期 §3.2
详细解答

代码输出

text 复制代码
12 -1 32 -1
hi world hi python
hi world hello python

find() 方法详解

特性 说明
作用 在字符串中查找指定子串,返回首次出现的索引位置
未找到时 返回 -1(与 index() 不同,后者抛出异常)
参数 find(sub[, start[, end]]),可指定查找范围
python 复制代码
# 逐个解析
pos1 = text.find("powerful")   # "powerful" 从索引12开始 → 12
pos2 = text.find("Java")       # 不存在 → -1
pos3 = text.find("a", 15)      # 从索引15开始找 "a" → 32
pos4 = text.find("a", 10, 20)  # 在索引10~20区间找 → -1

replace() 方法详解

特性 说明
作用 将字符串中的指定子串替换为新的子串
返回值 返回新字符串(原字符串不变,因为字符串不可变)
参数 replace(old, new[, count])count 限制替换次数
python 复制代码
text2 = "hello world hello python"

# 全部替换
new_text = text2.replace("hello", "hi")
# → "hi world hi python"

# 只替换前1次
new_text_limit = text2.replace("hello", "hi", 1)
# → "hi world hello python"

题目四:字符串的分割与拼接

题目 :请写出以下代码的输出,并说明 split()join() 方法的作用。为什么在循环中拼接大量字符串时推荐使用 join() 而不是 +

python 复制代码
# split 示例
text = "苹果,香蕉,橙子,葡萄,西瓜"
print(text.split(","))
print(text.split(",", 2))

words = "Python  Java  C++   JavaScript"
print(words.split())

# join 示例
fruits = ["苹果", "香蕉", "橙子"]
print("-".join(fruits))
print("".join(["P", "y", "t", "h", "o", "n"]))

# + 与 * 操作
print("Hello" + " " + "World")
print("=" * 30)
考查知识点
  • split() 方法 ------ 第四期 §4.1
  • join() 方法 ------ 第四期 §4.2
  • 字符串拼接性能 ------ 第四期 §4.3
详细解答

代码输出

text 复制代码
['苹果', '香蕉', '橙子', '葡萄', '西瓜']
['苹果', '香蕉', '橙子,葡萄,西瓜']
['Python', 'Java', 'C++', 'JavaScript']
苹果-香蕉-橙子
Python
Hello World
==============================

split() 方法详解

特性 说明
作用 按指定分隔符将字符串分割为多个子串,返回列表
不传参数时 按所有空白字符分割,多个连续空白视为一个分隔符
限制分割次数 split(sep, maxsplit),第二个参数控制分割次数
python 复制代码
# 限制分割次数:只分割前2次,剩余部分作为一个整体
text.split(",", 2)   # → ['苹果', '香蕉', '橙子,葡萄,西瓜']

join() 方法详解

特性 说明
作用 使用指定分隔符,将可迭代对象(如列表)拼接成一个字符串
语法 分隔符.join(可迭代对象)
性能 在循环中拼接大量字符串时,join()+ 高效得多

为什么 join()+ 更快

python 复制代码
# ❌ 低效方式:每次 + 都会创建新的字符串对象
result = ""
for word in words:
    result += word   # 产生大量临时对象

# ✅ 高效方式:一次性完成拼接
result = "".join(words)   # 只创建一次新字符串

+\* 操作字符串

运算符 作用 示例
+ 拼接字符串 "Hello" + "World""HelloWorld"
* 重复字符串 "=" * 30"=============================="

题目五:删除字符串的指定字符

题目 :请写出以下代码的输出,并说明 strip()lstrip()rstrip() 三个方法的区别与使用场景。

python 复制代码
text = "  Python编程  "
text_star = "*****Python*****"

print(f"'{text.strip()}'")
print(f"'{text.lstrip()}'")
print(f"'{text.rstrip()}'")

print(text_star.strip("*"))
print(text_star.lstrip("*"))
print(text_star.rstrip("*"))
考查知识点
  • 删除字符串指定字符 ------ 第四期 §5
  • strip()lstrip()rstrip() 方法
详细解答

代码输出

text 复制代码
'Python编程'
'Python编程  '
'  Python编程'
Python
Python*****
*****Python

三个方法的对比

方法 作用 默认删除 适用场景
strip() 删除字符串两端的指定字符 空格 清理用户输入的前后空格
lstrip() 删除字符串左端(开头)的指定字符 空格 删除行首缩进或特定前缀
rstrip() 删除字符串右端(末尾)的指定字符 空格 删除行尾换行符或特定后缀
python 复制代码
# 指定删除特定字符
text_star = "*****Python*****"
print(text_star.strip("*"))    # Python
print(text_star.lstrip("*"))   # Python*****
print(text_star.rstrip("*"))   # *****Python

实战场景

python 复制代码
# 1. 清理文件读取时的换行符
with open("data.txt") as f:
    for line in f:
        line = line.strip()   # 删除末尾的 \n 和前后的空格

# 2. 清理用户输入
username = input("请输入用户名:").strip()   # 忽略用户误输入的空格

第四期:字符串(第 6-10 题)

题目六:字符串大小写转换

题目 :请写出以下代码的输出,并说明 upper()lower()capitalize()title() 四个方法的区别。

python 复制代码
text = "Life is short. I use Python"

print(text.upper())
print(text.lower())
print(text.capitalize())
print(text.title())
print(text.swapcase())
考查知识点
  • 字符串大小写转换 ------ 第四期 §6
详细解答

代码输出

text 复制代码
LIFE IS SHORT. I USE PYTHON
life is short. i use python
Life is short. i use python
Life Is Short. I Use Python
lIFE IS SHORT. i USE pYTHON

四种方法对比

方法 作用 示例(输入 "hello WORLD"
upper() 全部转为大写 "HELLO WORLD"
lower() 全部转为小写 "hello world"
capitalize() 首字母大写,其余小写 "Hello world"
title() 每个单词首字母大写 "Hello World"
swapcase() 大小写互换 "HELLO world"

实战场景

python 复制代码
# 1. 用户登录时忽略大小写(用户名不区分大小写)
input_username = "Admin"
if input_username.lower() == "admin":   # 统一转为小写比较
    print("登录成功")

# 2. 格式化标题
title = "python programming guide"
print(title.title())   # Python Programming Guide

题目七:字符串对齐方法

题目 :请写出以下代码的输出,并说明 center()ljust()rjust() 三个方法的作用。请用这三个方法实现一个简单的商品价格表。

python 复制代码
text = "Python"

print(f"'{text.center(15, '-')}'")
print(f"'{text.ljust(15, '*')}'")
print(f"'{text.rjust(15, '*')}'")
考查知识点
  • 字符串对齐 ------ 第四期 §7
详细解答

代码输出

text 复制代码
'----Python----'
'Python*********'
'*********Python'

三种对齐方法对比

方法 作用 示例(text.center(15, '-')
center(width[, fillchar]) 居中显示 '----Python----'
ljust(width[, fillchar]) 左对齐显示 'Python*********'
rjust(width[, fillchar]) 右对齐显示 '*********Python'

参数说明

  • width:输出字符串的总宽度(必填)
  • fillchar:填充字符(可选,默认为空格)

实战:商品价格表

python 复制代码
products = [
    ("iPhone 15", 5999),
    ("AirPods Pro", 1899),
    ("MacBook Air", 9499),
]

print("=" * 50)
print("商品名称".ljust(20) + "价格".rjust(30))
print("-" * 50)

for name, price in products:
    print(name.ljust(20) + f"¥{price:,.0f}".rjust(30))

print("=" * 50)

运行结果

text 复制代码
==================================================
商品名称                                    价格
--------------------------------------------------
iPhone 15                               ¥5,999
AirPods Pro                             ¥1,899
MacBook Air                             ¥9,499
==================================================

题目八:字符串内容判断方法

题目 :请写出以下代码的输出,并说明 isdigit()isalpha()isalnum()startswith()endswith() 方法的作用。在什么场景下需要使用这些方法?

python 复制代码
text1 = "Python3"
text2 = "123"
text3 = "abc"
text4 = "hello.txt"

print(text1.isdigit())
print(text1.isalpha())
print(text1.isalnum())

print(text2.isdigit())
print(text3.isalpha())

print(text4.startswith("hello"))
print(text4.endswith(".txt"))
考查知识点
  • 字符串内容判断方法 ------ 第四期 §9(补充知识)
详细解答

代码输出

text 复制代码
False
False
True
True
True
True
True

常用判断方法表

方法 说明 示例
isdigit() 是否只包含数字 "123".isdigit()True
isalpha() 是否只包含字母 "abc".isalpha()True
isalnum() 是否只包含字母或数字 "abc123".isalnum()True
isspace() 是否只包含空白字符 " ".isspace()True
isupper() 是否全为大写 "HELLO".isupper()True
islower() 是否全为小写 "hello".islower()True
startswith(prefix) 是否以指定前缀开头 "Hello".startswith("He")True
endswith(suffix) 是否以指定后缀结尾 "Hello".endswith("lo")True

实战场景

python 复制代码
# 1. 输入校验(判断是否为纯数字)
age = input("请输入年龄:")
if age.isdigit():
    age = int(age)
else:
    print("请输入有效数字!")

# 2. 文件类型判断
filename = "report.pdf"
if filename.endswith(".pdf"):
    print("PDF文件")
elif filename.endswith((".docx", ".doc")):
    print("Word文档")

# 3. 路径或URL前缀判断
url = "https://example.com"
if url.startswith("https://"):
    print("安全连接")

题目九:综合实战------文本进度条

题目 :请补全以下文本进度条的代码,使其实现动态更新进度的效果。要求:使用 \r 实现同一行刷新,进度条长度为 50 格,已完成部分用 表示,未完成部分用 表示。

python 复制代码
import time

def show_progress(total=100):
    for i in range(total + 1):
        percent = ________      # 补全:计算百分比
        bar_length = 50
        filled = ________       # 补全:计算已填充格数
        bar = ________          # 补全:生成进度条字符串

        print(f"\r进度:{percent:>6.1f}% |{bar}| {i}/{total}", end="", flush=True)
        time.sleep(0.03)

    print("\n✅ 完成!")

show_progress(100)
考查知识点
  • 转义字符 \r(回车)------ 第四期 §1.2
  • 字符串重复 * 与拼接 ------ 第四期 §4.3
  • f-string 格式化 ------ 第四期 §2.3
详细解答

补全后的代码

python 复制代码
import time

def show_progress(total=100):
    for i in range(total + 1):
        percent = i / total * 100                     # 补全:计算百分比
        bar_length = 50
        filled = int(i / total * bar_length)          # 补全:计算已填充格数
        bar = "█" * filled + "░" * (bar_length - filled)  # 补全:生成进度条字符串

        print(f"\r进度:{percent:>6.1f}% |{bar}| {i}/{total}", end="", flush=True)
        time.sleep(0.03)

    print("\n✅ 完成!")

show_progress(100)

核心技术点解析

技术点 说明
\r 回车符,让光标回到行首,实现同一行覆盖更新
end="" 禁止 print() 自动换行
flush=True 强制立即刷新输出缓冲区
"█" * filled 字符串重复生成进度条已完成部分
"░" * (bar_length - filled) 字符串重复生成未完成部分
percent:>6.1f 右对齐、占6位、保留1位小数的浮点数格式

题目十:综合实战------敏感词替换与文字排版

题目 :请编写一个函数 clean_text(text),实现以下功能:

  1. 删除文本中多余的空格(多个连续空格合并为1个)
  2. 将预定义的敏感词替换为 ***(敏感词列表:["暴力", "色情", "赌博"]
  3. 将英文句号 . 替换为中文句号

测试用例:"Python 是 一种 简单 易学 的 语言 。 它 的 语法 很 简洁 。"

考查知识点
  • split() + join() 合并空格 ------ 第四期 §4
  • replace() 方法 ------ 第四期 §3.2
  • 综合字符串操作
详细解答
python 复制代码
def clean_text(text):
    """
    清理文本:
    1. 合并多余空格
    2. 替换敏感词为 ***
    3. 英文句号替换为中文句号
    """
    # 1. 合并多个连续空格为一个
    text = " ".join(text.split())

    # 2. 替换敏感词
    sensitive_words = ["暴力", "色情", "赌博"]
    for word in sensitive_words:
        text = text.replace(word, "***")

    # 3. 英文句号替换为中文句号
    text = text.replace(".", "。")

    return text

# 测试
raw = "Python  是  一种  简单  易学  的  语言 。 它  的  语法  很  简洁 。"
cleaned = clean_text(raw)
print("原始文本:", raw)
print("清理后:  ", cleaned)

运行结果

text 复制代码
原始文本: Python  是  一种  简单  易学  的  语言 。 它  的  语法  很  简洁 。
清理后:   Python 是 一种 简单 易学 的 语言 。 它 的 语法 很 简洁 。

核心技术点解析

步骤 代码 原理
合并空格 " ".join(text.split()) split() 不传参数时按所有空白分割,多个连续空白只产生一个分割点
替换敏感词 text.replace(word, "***") 遍历敏感词列表,逐一替换
标点替换 text.replace(".", "。") 英文句号转中文句号

附:知识点对应总表

题号 主要考查知识点(对应笔记章节)
1 第四期 §1.1 字符串三种定义方式;§1.2 转义字符;§1.3 原始字符串
2 第四期 §2.1 % 格式化;§2.2 format() 方法;§2.3 f-string 格式化
3 第四期 §3.1 find() 方法;§3.2 replace() 方法
4 第四期 §4.1 split() 方法;§4.2 join() 方法;§4.3 字符串拼接
5 第四期 §5 strip()lstrip()rstrip() 方法
6 第四期 §6 upper()lower()capitalize()title() 方法
7 第四期 §7 center()ljust()rjust() 对齐方法
8 第四期 §9 isdigit()isalpha()startswith()endswith() 判断方法
9 第四期 §1.2 \r 转义字符;§4.3 字符串重复;§2.3 f-string 格式化
10 第四期 §3.2 replace() 方法;§4.1、§4.2 分割与拼接综合应用

学习建议:对于答错的题目,请回看第四期对应章节,并动手在 Python 交互式环境中执行相关命令。字符串处理是日常开发中最常用的技能之一,建议通过实际编写文本处理程序加深理解。
--- Compiled and Authored by Whisky --- July 14 th, 2026

相关推荐
chnyi6_ya1 小时前
论文阅读笔记 | VIDEOPHY: Evaluating Physical Commonsense for Video Generation
论文阅读·笔记
光学补偿1 小时前
微服务学习 --- Spring Cloud概述
学习·spring cloud·微服务
一次旅行1 小时前
【AI技术_工具】用 MCP 把本地工具接入 Claude_Cursor,让 AI 真正摸到你的数据
大数据·人工智能·python
AOwhisky2 小时前
Python 学习笔记(第六期)——函数:定义、参数传递与作用域
笔记·python·学习·云原生·运维开发·函数·参数传递
@@@@@@@@542 小时前
JavaScript 的缺点与 TypeScript 的弥补
开发语言·javascript·typescript
网小鱼的学习笔记2 小时前
Agent学习001
学习·迁移学习
এ慕ོ冬℘゜2 小时前
深度解析 JavaScript:赋予 Web 灵魂的“全栈语言”
开发语言·前端·javascript
茗创科技2 小时前
CGE连接组:用基因表达解码脑疾病的异质性(附高分文献下载)
python·matlab·脑网络
汤米粥2 小时前
Python调用百度搜索触发安全验证
开发语言·python