
文章目录1. 字符串基础1.1 字符串创建1.2 转义字符1.3 原始字符串1.4 字符串拼接和重复1.5 字符串长度1.6 字符串的不可变性2. 访问字符串2.1 使用索引访问单个字符2.2 使用切片访问子字符串3. 字符串常用内置方法3.1 大小写转换相关方法3.2 查找与替换相关方法3.3 编码与解码相关方法3.4 判断与检查相关方法3.5 分割与拼接相关方法3.6 其他常用方法4. 字符串的成员运算字符串是 Python 中表示文本数据的核心数据类型本质是由单个字符组成的有序序列广泛应用于文本处理、路径操作、用户输入输出、数据解析等几乎所有 Python 编程场景是入门阶段必须重点掌握、熟练运用的基础知识点。在 Python 中字符串str是一种高频使用的数据类型专门用于表示文本信息。值得注意的是Python 字符串属于不可变序列类型——一旦创建字符串对象其内部内容便无法直接修改所有看似“修改”的操作本质都是生成新的字符串。1. 字符串基础1.1 字符串创建Python 提供三种灵活的字符串创建方式分别是单引号、双引号和三重引号单引号或双引号三种方式创建的字符串本质完全一致仅语法上有细微差异可根据实际使用场景灵活选择。其中三重引号的核心优势的是支持多行字符串且能保留文本中的换行和缩进格式无需额外处理。single_quotedHello, World!double_quotedHello, World!triple_quotedThis is a multi-line string. It spans multiple lines.print(type(single_quoted))# class strprint(type(double_quoted))# class strprint(type(triple_quoted))# class str1.2 转义字符转义字符是以反斜杠\开头的特殊字符用于表示那些无法直接在字符串中书写的字符如换行、制表符、引号等其核心作用是规避语法冲突让 Python 准确识别特殊格式需求。以下是入门阶段必须掌握的高频转义字符清晰整理如下转义字符说明作用与用法示例代码输出结果\n换行符用于换行将光标移到下一行开头。print(第一行\n第二行)第一行第二行\t制表符模拟 Tab 键通常等于 4 个空格用于对齐排版。print(姓名\t年龄)姓名 年龄\’转义单引号在单引号包裹的字符串内用来显示一个单引号。str6 It\s a bookIt’s a book\转义双引号在双引号包裹的字符串内用来显示一个双引号。str7 He said \Hi\He said “Hi”补充说明若字符串中无需使用任何转义字符可借助后续讲解的原始字符串简化书写需注意转义字符必须以\开头若单独书写\而后续无对应字符会导致语法报错。1.3 原始字符串原始字符串Raw String的定义十分简单只需在字符串开头添加字母r大小写均可通常使用小写r即可让字符串中的所有字符按字面意思解释不再解析任何转义字符——也就是说\不再是转义符号仅作为普通字符存在。原始字符串的核心应用场景是处理文件路径、正则表达式等这类场景中常包含大量\若不使用原始字符串需频繁书写双反斜杠\\进行转义操作繁琐且易出错。错误写法普通字符串path C:\Users\Admin\Desktop\test.pyPython会尝试解析\U为转义字符导致路径无效运行时可能报错。正确写法原始字符串path rC:\Users\Admin\Desktop\test.py在字符串开头加r后所有\都被当作普通字符Python不会解析转义路径可正常识别。1.4 字符串拼接和重复字符串的拼接与重复是入门阶段最常用的两个操作语法简洁、实用性极强无需复杂逻辑通过简单运算符即可实现。拼接使用运算符可将多个字符串连接在一起形成一个新字符串重复使用*运算符可让一个字符串重复指定次数生成新字符串。s1Hellos2Worldprint(s1 s2)# 输出: Hello Worldprint((s1 )*3)# 输出Hello Hello Hello1.5 字符串长度获取字符串长度十分简单使用 Python 内置函数len()即可该函数会统计字符串中所有字符的总数包括空格、标点符号等。s1Hello World!print(len(s1))# 输出121.6 字符串的不可变性再次强调Python 字符串是不可变的数据类型这意味着字符串一旦创建就无法直接修改、替换或删除其中的单个字符。若需修改字符串内容只能通过切片、拼接等方式创建一个新的字符串原字符串始终保持不变。originalhello# 下面这行代码会抛出 TypeError无法直接修改单个字符# original[0] H# 正确的方式通过切片拼接创建新字符串new_stringHoriginal[1:]print(new_string)# 输出: Hello2. 访问字符串由于字符串是有序序列我们可以通过“索引”访问单个字符通过“切片”访问子字符串这两种方式是字符串操作的基础需熟练掌握。2.1 使用索引访问单个字符Python 中字符串的索引分为两种便于灵活获取不同位置的字符正向索引从0开始依次递增对应字符串从左到右的顺序反向索引从-1开始依次递减其中-1表示最后一个字符-2表示倒数第二个字符以此类推。greetingHello, World!print(greeting[0])# 输出: H正向索引第一个字符print(greeting[2])# 输出: l正向索引第三个字符print(greeting[-1])# 输出: !反向索引最后一个字符print(greeting[-2])# 输出: d反向索引倒数第二个字符2.2 使用切片访问子字符串切片用于获取字符串中的一部分字符语法格式为[start:stop:step]三个参数的含义如下核心原则是“包含起始不包含结束”start切片的起始索引包含该索引对应的字符可省略默认从开头开始stop切片的结束索引不包含该索引对应的字符可省略默认到字符串末尾step切片的步长即每次获取字符的间隔可省略默认步长为 1步长为正从左到右截取步长为负从右到左截取。greetingHello, World!# (1)[开始索引:] 从开始索引截取到字符串的最后resgreeting[3:]print(res)# 输出lo, World!# (2)[:结束索引] 从开头截取到结束索引之前即结束索引-1的位置# 核心原则取头舍尾结束索引本身对应的字符无法获取resgreeting[:5]print(res)# 输出Hello# (3)[开始索引:结束索引] 从开始索引截取到结束索引之前resgreeting[10:12]print(res)# 输出ld# (4)[开始索引:结束索引:间隔值] 按指定间隔截取字符# 从左向右截取步长为正resgreeting[::3]# 对应索引0、3、6、9、12...print(res)# 输出Hl r!# 从右向左截取步长为负resgreeting[::-1]# 对应索引-1、-2、-3、-4...字符串反转print(res)# 输出!dlroW ,olleHresgreeting[-3:-10:-2]# 从索引-3开始到-10结束不包含步长为-2对应索引-3、-5、-7、-9print(res)# 输出lo o关键提醒从左到右截取时步长需设为正值从右到左截取时步长需设为负值才能确保正常获取到目标数据。3. 字符串常用内置方法Python 的字符串str类型提供了丰富的内置方法无需额外导入模块可直接调用用于快速处理和操作字符串。以下是入门阶段高频使用的方法按功能分类整理便于记忆和使用。str() 函数将各类对象如数字、列表、元组等转换为字符串形式返回一个可读的字符串表示常用于数据显示、存储或拼接场景。s11024s25.12s3[1,2,3,4,5]print(str(s1),str(s2),str(s3))print(type(str(s1)),type(str(s2)),type(str(s3)))3.1 大小写转换相关方法这类方法主要用于字符串大小写的统一处理返回新的字符串不改变原字符串内容。lower()将字符串中所有大写字母转换为小写返回新字符串。sHello Worldprint(s.lower())# 输出hello worldupper()将字符串中所有小写字母转换为大写返回新字符串。sHello Worldprint(s.upper())# 输出HELLO WORLDcapitalize()仅将字符串首字母大写其余字母全部转为小写返回新字符串仅对字符串第一个字符生效。shello worldprint(s.capitalize())# 输出Hello worldtitle()将字符串中每个单词的首字母大写其余字母小写以空格分隔的内容视为“单词”返回新字符串。shello worldprint(s.title())# 输出Hello World3.2 查找与替换相关方法这类方法用于查找字符串中的子串、统计子串出现次数或替换指定子串是文本处理中最常用的功能之一。find(sub)查找子字符串sub在目标字符串中首次出现的索引若未找到返回-1不报错。sPython is fun, Python is powerfulprint(s.find(Python))# 输出0首次出现的位置print(s.find(java))# 输出-1未找到扩展find()支持两个可选参数start和end用于限定查找范围从start索引开始到end索引结束不包含end。# 语法字符串.find(sub, start, end)sHello, world! Hello again.# 从索引 10 开始查找 Helloprint(s.find(Hello,10))# 输出14避开了第一个Hello# 在索引 5-20 之间查找 worldprint(s.find(world,5,20))# 输出7在范围内找到print(s.find(world,10,20))# 输出-1在范围内未找到补充rfind(sub)与find(sub)功能类似区别是从字符串右侧末尾开始查找返回子串最后一次出现的索引未找到同样返回-1。sapple, banana, apple, orange# 查找 apple 最后一次出现的位置右侧开始print(s.rfind(apple))# 输出15第二个 apple 的起始索引# 查找不存在的子字符串print(s.rfind(grape))# 输出-1index(sub)功能与find(sub)完全一致用于查找子串首次出现的索引但子串未找到时会抛出ValueError异常区别于find()的不报错特性。sPython is funprint(s.index(is))# 输出7# print(s.index(java)) # 报错ValueError: substring not found扩展index()同样支持start和end可选参数rindex(sub)从字符串末尾开始查找未找到同样报错。count(sub)统计子字符串sub在字符串中出现的次数返回整数。sababaabprint(s.count(aba))# 输出2位置 0-2 和 2-4replace(old, new [,count])将字符串中所有old子字符串替换为new子字符串返回新字符串可选参数count用于指定最大替换次数默认替换所有匹配的子串。sI like apple, apple is good# 替换所有 apple 为 bananaprint(s.replace(apple,banana))# 输出I like banana, banana is good# 只替换第一次出现的 appleprint(s.replace(apple,banana,1))# 输出I like banana, apple is good3.3 编码与解码相关方法在 Python 中字符串str和字节bytes之间的转换需通过编码encode和解码decode实现常用于网络传输、文件读写等场景核心是保证编码与解码格式一致避免乱码。encode(encodingutf-8, errorsstrict)将字符串转换为字节对象编码需指定编码格式。encoding编码格式默认utf-8常用还有gbk、utf-16等errors错误处理方式默认strict报错可选ignore忽略、replace替换等s编码测试Hello# 默认 utf-8 编码b_utf8s.encode()print(b_utf8)# 输出b\xe7\xbc\x96\xe7\xa0\x81\xe6\xb5\x8b\xe8\xaf\x95\xef\xbc\x9aHello# 指定 gbk 编码b_gbks.encode(gbk)print(b_gbk)# 输出b\xb1\xe0\xc2\xeb\xb2\xe2\xca\xd4\xef\xbc\x9aHello# 错误处理用 ascii 编码中文会报错捕获异常try:s.encode(ascii)exceptUnicodeEncodeError:print(ASCII 编码无法处理中文)decode(encodingutf-8, errorsstrict)将字节对象转换为字符串解码需与编码时的格式一致。参数同encode()encoding必须匹配编码格式否则可能乱码或报错。b_utf8b\xe7\xbc\x96\xe7\xa0\x81\xe6\xb5\x8b\xe8\xaf\x95# 用 utf-8 解码正确方式s1b_utf8.decode(utf-8)print(s1)# 输出编码测试# 用错误格式解码导致乱码s2b_utf8.decode(gbk)print(s2)# 输出乱码缂栫爜娴嬭瘯# 忽略错误解码丢失信息bb\xe4\xbd\xa0\xe5\xa5\xbd\x80# 包含无效字节 \x80s3b.decode(utf-8,errorsignore)print(s3)# 输出你好忽略了错误字节核心提醒编码与解码必须使用相同的格式如utf-8编码 →utf-8解码否则会乱码或报错。Python 3 中默认使用utf-8支持全球所有语言字符推荐优先使用。编码和解码是处理文本数据的基础确保格式一致性是避免乱码的关键。3.4 判断与检查相关方法这类方法用于判断字符串是否满足特定条件返回布尔值True或False常用于条件判断场景。startswith(prefix)判断字符串是否以指定前缀prefix开头返回布尔值。sPython is greatprint(s.startswith(Python))# 输出Trueprint(s.startswith(java))# 输出Falseendswith(suffix)判断字符串是否以指定后缀suffix结尾返回布尔值。sPython is greatprint(s.endswith(great))# 输出Trueprint(s.endswith(good))# 输出Falseisalpha()判断字符串是否只包含字母a-z, A-Z且非空返回布尔值。print(Hello.isalpha())# 输出Trueprint(Hello123.isalpha())# 输出False包含数字isdigit()判断字符串是否只包含数字0-9且非空返回布尔值。print(12345.isdigit())# 输出Trueprint(123abc.isdigit())# 输出False包含字母isalnum()判断字符串是否只包含字母和数字且非空返回布尔值。print(Python123.isalnum())# 输出Trueprint(Python 123.isalnum())# 输出False包含空格strip()移除字符串两端的空白字符空格、换行符\n、制表符\t等返回新字符串。s \tHello World\n print(s.strip())# 输出Hello World扩展lstrip()仅移除字符串左端空白rstrip()仅移除字符串右端空白可根据需求选择使用。3.5 分割与拼接相关方法分割与拼接是字符串处理中高频搭配使用的方法常用于将字符串拆分为列表、或将列表拼接为字符串。split(sep)以sep为分隔符分割字符串返回分割后的列表默认以空白字符分割。sapple,banana,orangeprint(s.split(,))# 输出[apple, banana, orange]s2Hello world pythonprint(s2.split())# 输出[Hello, world, python]默认按空格分割如果sep是一个空字符串 “”会抛出ValueError错误。可以通过第二个参数maxsplit限制分割次数texta,b,c,dresulttext.split(sep,,maxsplit2)# 最多分割2次print(result)# 输出: [a, b, c,d]join(iterable)将可迭代对象如列表、元组中的元素以当前字符串为分隔符拼接成新字符串。fruits[apple,banana,orange]print(, .join(fruits))# 输出apple, banana, orange以 , 拼接3.6 其他常用方法len(s)虽然不是字符串的方法是内置函数但常用于获取字符串长度。sHelloprint(len(s))# 输出5center(width)将字符串居中并用空格填充至指定宽度width。sHelloprint(s.center(10))# 输出 Hello 两边各补2个空格总长度10zfill(width)在字符串左侧填充0使总长度为width常用于数字字符串格式化。s123print(s.zfill(5))# 输出001234. 字符串的成员运算Python 中字符串支持成员运算通过in和not in两个关键字可快速判断一个子字符串或单个字符是否存在于目标字符串中返回结果为布尔值True或False语法简洁、实用性强。in运算判断子字符串或单个字符是否存在于目标字符串中存在则返回True不存在则返回False。sHello, world!print(Helloins)# 输出: TrueHello是s的子串print(worldins)# 输出: Trueworld是s的子串print(Pythonins)# 输出: FalsePython不是s的子串print(oins)# 输出: True单个字符也是子串not in运算判断子字符串或单个字符是否不存在于目标字符串中不存在则返回True存在则返回False与in运算逻辑相反。sHello, world!print(Javanotins)# 输出: TrueJava不在s中print(llonotins)# 输出: Falsello在s中注意事项成员运算区分大小写例如hello in s与Hello in s是两个不同的判断结果可能不同空字符串是任何字符串的子串即 in 任意字符串始终返回True成员运算常用于条件判断场景例如检查字符串中是否包含特定关键词、符号等简化逻辑判断。本文已涵盖Python字符串入门核心知识点包括创建、访问、内置方法及成员运算字符串作为Python高频使用的数据类型是进阶学习的基础。需牢记字符串“不可变性”这一核心特性内置方法无需死记硬背多动手实践即可熟练运用打好基础为后续学习筑牢根基。