Python入门:字符串类型

发布时间:2026/9/6 23:01:21

Python入门:字符串类型
文章目录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高频使用的数据类型是进阶学习的基础。需牢记字符串“不可变性”这一核心特性内置方法无需死记硬背多动手实践即可熟练运用打好基础为后续学习筑牢根基。

相关新闻

51单片机自动节水灌溉系统设计:从传感器到水泵的完整实战

51单片机自动节水灌溉系统设计:从传感器到水泵的完整实战

2026/9/6 23:01:21

简介:基于单片机的自动节水灌溉系统课程设计文档,定位为面向计算机、自动化、农业工程等相关专业学生的毕业设计或课程设计参考资料。资源共1个文件,为doc格式文档,压缩包大小445KB,内容覆盖AT89C51单片机控制原理、主…

基于51单片机的自动节水灌溉系统设计要点与调试实战

基于51单片机的自动节水灌溉系统设计要点与调试实战

2026/9/6 23:01:21

简介:面向计算机科学与技术等专业学生的单片机课程设计文档,围绕自动节水灌溉系统展开,适合需要完成类似课设或理解单片机控制、传感器采集、灌溉控制流程的读者。内容完整覆盖硬件电路设计(AT89C51单片机主机系统、时钟、复位、存…

制造业采购供应链业务流程蓝图规划:从现状梳理到系统落地的完整指南

制造业采购供应链业务流程蓝图规划:从现状梳理到系统落地的完整指南

2026/9/6 23:01:21

简介:这是一份制造业采购供应链业务流程蓝图规划PPT,共84页,面向供应链管理者、采购流程优化顾问及企业数字化规划人员。全篇内容围绕“低成本、高齐套”的材料供应愿景,系统地拆解采购到付款的一级流程,详细覆盖采购策…

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析

2026/9/7 0:01:24

2026 年已经过了一大半,如果你现在正准备入手 AI 视觉或物联网开发板,我建议你先别急着下单。市面上从几十块的 ESP32 到几千块的英伟达 Jetson,价格差了近百倍,宣传话术却几乎一样,都告诉你“能跑 AI、能做视觉、能搞…

基于Vue的企业门户网站管理系统的设计与实现

基于Vue的企业门户网站管理系统的设计与实现

2026/9/7 0:01:24

目 录 摘 要 Abstract 目 录 1 引言 1.1 选题背景 1.2 研究现状 1.3 目的和意义 1.4 论文结构安排 1.5本章小结 2 开发环境与技术 2.1 MySQL数据库 2.2 Java语言技术 2.3 Spring Boot框架 2.4 Vue.js 2.5 本章小节 3 系统分析 …

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

ChCore操作系统实验全解析:从启动到虚拟内存与异常处理

ChCore操作系统实验全解析:从启动到虚拟内存与异常处理

2026/9/6 23:51:23

简介:面向操作系统课程设计与实践备考的完整实验方案,围绕上海交通大学Chcore操作系统教学环境,覆盖内存管理、系统调用与缺页异常两大核心模块。文档对分页机制、页表管理、内存分配与回收、内存保护、换页流程以及系统调用、缺页处理、页替…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/6 1:19:56

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/6 1:19:56

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/6 1:19:56

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

2026/9/7 0:01:24

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

2026/9/7 0:01:24

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

2026/9/7 0:01:24

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

远程协作的工作台整理

远程协作的工作台整理

2026/9/3 6:56:24

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/4 7:42:10

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/6 23:21:51

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…