news 2026/7/19 13:35:37

Python 字符串完全指南:从基础到进阶操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 字符串完全指南:从基础到进阶操作

大家好,字符串是Python中使用频率最高的数据类型之一。无论是处理用户输入、解析文本文件,还是生成日志信息,都离不开它。这篇文章我们将系统性地学习字符串的七个核心方面,每个部分都配有代码示例,方便理解和查阅。


一、定义

字符串是由字符组成的序列,用引号括起来表示。

定义方式

# 单引号 name = '张三' # 双引号 city = "北京" # 三引号(支持多行) desc = """这是一段 多行文本 可以换行写""" # 三单引号同样支持多行 content = '''也是 多行文本'''

空字符串

empty1 = "" empty2 = '' empty3 = str() # 使用 str() 构造方法

单引号和双引号在功能上完全等价,选择哪种主要看字符串内容是否包含引号:

# 字符串包含单引号,外层用双引号 msg1 = "I'm a student" # 字符串包含双引号,外层用单引号 msg2 = '他说:"你好"' # 或者使用转义符 msg3 = 'I\'m a student'

二、转义

转义字符用来表示一些特殊字符,以反斜杠\开头。

常用转义字符

转义符含义
\'单引号
\"双引号
\\反斜杠本身
\n换行符
\t制表符(Tab键)
\r回车符
\b退格符
# 换行 print("第一行\n第二行") # 输出: # 第一行 # 第二行 # 制表符 print("姓名\t年龄\t城市") print("张三\t25\t北京") # 路径中的反斜杠需要转义 path = "C:\\Users\\Documents\\file.txt" # 或者使用原始字符串(推荐) path = r"C:\Users\Documents\file.txt"

原始字符串

在字符串前加r,可以使字符串中的反斜杠不被解释为转义字符:

# 普通字符串 s1 = "C:\new\test" # \n 会被解释为换行 # 原始字符串 s2 = r"C:\new\test" # 原样输出 C:\new\test

原始字符串在写正则表达式、文件路径时非常实用。


三、格式化方法

格式化是指将变量值嵌入到字符串中,Python提供了多种方式。

1.%格式化(旧式)

name = "张三" age = 25 print("我叫%s,今年%d岁" % (name, age)) # 我叫张三,今年25岁

常用占位符:%s字符串、%d整数、%f浮点数。

2.format()方法

name = "张三" age = 25 # 按位置 print("我叫{},今年{}岁".format(name, age)) # 按索引 print("我叫{1},今年{0}岁".format(age, name)) # 按变量名 print("我叫{name},今年{age}岁".format(name=name, age=age))

3. f-string(推荐,Python 3.6+)

name = "张三" age = 25 print(f"我叫{name},今年{age}岁") # 我叫张三,今年25岁

f-string 还可以嵌入表达式:

x, y = 3, 5 print(f"{x} + {y} = {x + y}") # 3 + 5 = 8 price = 12.345 print(f"价格:{price:.2f}元") # 价格:12.35元

f-string 是目前最推荐的格式化方式,可读性最好,性能也最高。


四、索引

字符串中的每个字符都有一个位置编号,可以通过索引来访问。

索引规则

正向索引:从0开始,从左到右

负向索引:从-1开始,从右到左

s = "Python" # 正向索引 print(s[0]) # P print(s[3]) # h print(s[5]) # n # 负向索引 print(s[-1]) # n print(s[-3]) # h

索引对应关系

字符Python
正向012345
负向-6-5-4-3-2-1

索引越界

使用索引时,如果超出范围会报错:

s = "Python" # print(s[10]) # IndexError: string index out of range

字符串是不可变类型,不能通过索引修改字符:

s = "Python" # s[0] = "J" # TypeError: 'str' object does not support item assignment

五、切片

切片是从字符串中截取子串的操作,语法为[start:end:step]

基本语法

s = "Hello, World!" # 截取一段 print(s[0:5]) # Hello (包含索引0,不包含索引5) print(s[7:12]) # World (包含索引7,不包含索引12) # 省略开始或结束 print(s[:5]) # Hello (从开头到索引4) print(s[7:]) # World! (从索引7到末尾) print(s[:]) # Hello, World! (全部) # 负索引切片 print(s[-6:-1]) # World (从倒数第6到倒数第2)

步长

s = "abcdefghij" print(s[::2]) # acegi (从开头到末尾,每2个取1个) print(s[1::2]) # bdfhj (从索引1开始,每2个取1个) print(s[::-1]) # jihgfedcba (反转字符串)

切片的特点

  • 左闭右开:包含start,不包含end

  • 容错性好:索引超出范围不会报错,只返回能取到的部分

s = "abc" print(s[0:10]) # abc (不会报错) print(s[10:20]) # '' (返回空字符串)

六、遍历

遍历字符串的三种常用方式。

1. 直接遍历字符

s = "Python" for char in s: print(char) # 输出:P y t h o n (每行一个)

2. 通过索引遍历

s = "Python" for i in range(len(s)): print(s[i])

3.enumerate()同时获取索引和值

s = "Python" for index, char in enumerate(s): print(f"索引{index}:{char}") # 索引0:P # 索引1:y # 索引2:t # 索引3:h # 索引4:o # 索引5:n

4. 判断字符类型

遍历时经常配合字符判断方法:

s = "Hello123" for char in s: if char.isdigit(): print(f"{char} 是数字") elif char.isalpha(): print(f"{char} 是字母")

七、常用方法

字符串提供了大量内置方法,这里按功能分类整理。

1. 大小写转换

方法说明示例
upper()全部转大写"hello".upper()"HELLO"
lower()全部转小写"HELLO".lower()"hello"
capitalize()首字母大写"hello".capitalize()"Hello"
title()每个单词首字母大写"hello world".title()"Hello World"
swapcase()大小写互换"Hello".swapcase()"hELLO"
text = "python is FUN" print(text.upper()) # PYTHON IS FUN print(text.lower()) # python is fun print(text.capitalize()) # Python is fun

2. 去除空白

方法说明
strip()去除两端空白字符(空格、换行、制表符)
lstrip()去除左端空白
rstrip()去除右端空白
text = " hello \n" print(text.strip()) # "hello" print(text.lstrip()) # "hello \n" print(text.rstrip()) # " hello"

也可以指定要去除的字符:

text = "!!!hello!!!" print(text.strip("!")) # "hello"

3. 查找与判断

方法说明
find(sub)返回第一个匹配的子串起始索引,找不到返回 -1
index(sub)find相同,但找不到会抛出异常
rfind(sub)从右向左查找
startswith(prefix)是否以指定前缀开头
endswith(suffix)是否以指定后缀结尾
count(sub)统计子串出现次数
s = "hello world hello" print(s.find("world")) # 6 print(s.find("python")) # -1 print(s.index("world")) # 6 # print(s.index("python")) # ValueError print(s.startswith("hello")) # True print(s.endswith("hello")) # True print(s.count("hello")) # 2

4. 拆分与拼接

方法说明
split(sep)按分隔符拆分成列表
rsplit(sep)从右向左拆分
splitlines()按换行符拆分
join(iterable)将可迭代对象拼接成字符串
# split data = "apple,banana,orange" result = data.split(",") print(result) # ['apple', 'banana', 'orange'] # split 可以指定最大拆分次数 data = "a,b,c,d" print(data.split(",", 2)) # ['a', 'b', 'c,d'] # splitlines text = "第一行\n第二行\n第三行" print(text.splitlines()) # ['第一行', '第二行', '第三行'] # join items = ['a', 'b', 'c'] print("-".join(items)) # 'a-b-c'

5. 替换

方法说明
replace(old, new, count)替换子串,可指定替换次数
s = "hello world hello" print(s.replace("hello", "hi")) # hi world hi print(s.replace("hello", "hi", 1)) # hi world hello

6. 对齐与填充

方法说明
center(width, fillchar)居中
ljust(width, fillchar)左对齐
rjust(width, fillchar)右对齐
zfill(width)右对齐,用0填充
s = "hello" print(s.center(11, "*")) # "***hello***" print(s.ljust(10, "-")) # "hello-----" print(s.rjust(10, "-")) # "-----hello" print(s.zfill(10)) # "00000hello"

7. 判断类型

方法说明
isalpha()是否全是字母
isdigit()是否全是数字
isalnum()是否全是字母或数字
isspace()是否全是空白字符
islower()是否全是小写
isupper()是否全是大写
istitle()是否符合标题格式
print("hello".isalpha()) # True print("123".isdigit()) # True print("hello123".isalnum()) # True print(" ".isspace()) # True print("Hello".istitle()) # True

八、总结

字符串在Python中占据重要地位,掌握好以下几个维度即可应对绝大多数场景:

知识点核心要点
定义单引号、双引号、三引号
转义\n\t\\,原始字符串r""
格式化%format()、f-string(推荐)
索引正向从0开始,负向从-1开始
切片[start:end:step],左闭右开
遍历forrangeenumerate()
常用方法大小写、去空白、查找、拆分拼接、替换等

字符串的各个方法不需要死记硬背,多写代码自然就熟悉了。如果遇到不记得的方法,可以用dir(str)查看所有方法,或者用help(str.method)查看详细说明。

如果觉得这篇内容对你有帮助,欢迎收藏和分享。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 13:35:25

iNiR多语言支持与AI翻译:如何为你的Shell添加新语言支持

iNiR多语言支持与AI翻译:如何为你的Shell添加新语言支持 【免费下载链接】iNiR A Niri shell illogical-impulse based - with some modifications.. 项目地址: https://gitcode.com/gh_mirrors/in/iNiR iNiR是一个基于Quickshell框架的完整桌面Shell&#x…

作者头像 李华
网站建设 2026/7/19 13:35:13

Cursor响应式布局性能优化全链路(实测Lighthouse评分提升42%)

更多请点击: https://intelliparadigm.com 第一章:Cursor响应式布局性能优化全链路(实测Lighthouse评分提升42%) Cursor作为AI原生代码编辑器,其Web前端界面重度依赖CSS Grid与Flexbox实现动态响应式布局。在高分辨率…

作者头像 李华
网站建设 2026/7/19 13:34:26

【餐饮创业者紧急必读】:ChatGPT菜谱生成已成新流量入口——错过这波AI食谱红利,下季度菜单竞争力将下降41%

更多请点击: https://kaifayun.com 第一章:ChatGPT菜谱生成已成新流量入口的底层逻辑 当用户在小红书搜索“低卡晚餐”,抖音推送“3分钟快手早餐”,或美团买菜页面自动推荐“冰箱剩余食材可做的3道菜”时,背后驱动的已…

作者头像 李华
网站建设 2026/7/19 13:34:22

工业 AI 项目性能优化:图像预处理、模型推理、IO 瓶颈全方位调优指南

摘要工业视觉 AI 系统普遍面临高并发图像采集、海量航拍 / 工业相机图片处理、实时识别预警等业务压力,系统瓶颈分散在图像预处理、深度学习模型推理、文件 / 消息 IO 全链路。相机实时抓拍、无人机批量航拍、多设备并发推理场景下,极易出现视频流卡顿、…

作者头像 李华
网站建设 2026/7/19 13:34:21

视频预览链路三件套:ZLMediaKit · MediaMTX · FFmpeg 完全指南

视频预览链路三件套:ZLMediaKit MediaMTX FFmpeg 完全指南摄像头视频预览实现教程:从原理到落地(ZLMediaKit flv.js Spring Boot): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/163018250 它们在本项目里的角色与链路 浏览…

作者头像 李华
网站建设 2026/7/19 13:34:17

【仅限首批200家】Copilot文档协作智能治理框架(含RAG增强版指令集+审计溯源插件):微软MVP闭门交付版首次公开

更多请点击: https://codechina.net 第一章:Copilot文档协作智能治理框架全景概览 Copilot文档协作智能治理框架是一套面向企业级知识协同场景的端到端治理体系,融合AI增强、权限语义化、版本可追溯与策略自动化四大核心能力。该框架并非单一…

作者头像 李华