Python语言基础:9_字符串

📅 2026/7/24 20:10:11
Python语言基础:9_字符串
Python3 字符串超详细新手教程字符串str是 Python 中最常用的数据类型之一用来存储文本信息比如名字、地址、文章内容等。本文从最基础的定义开始覆盖索引、切片、常用方法、格式化等全部核心知识点每个知识点都配可运行的代码和结果零基础也能完全看懂。一、什么是字符串用引号包裹起来的文本内容就是字符串在 Python 中类型为str。引号必须是英文半角中文引号会直接报错引号必须成对出现前后一致字符串里的内容可以是中文、英文、数字、符号等任意文本# 定义一个字符串 name 小明 print(name) print(type(name)) # 查看类型class str二、字符串的 4 种定义方式1. 单引号 s1 Hello Python print(s1)2. 双引号 s2 你好世界 print(s2) 单引号和双引号没有本质区别灵活搭配可以避免转义 如果字符串内部有单引号外面就用双引号内部有双引号外面就用单引号。# 不用转义更简洁 msg Im a student # 内部有单引号外面用双引号 print(msg) info 他说明天放假 # 内部有双引号外面用单引号 print(info)3. 三引号 / 用来定义多行字符串会保留原文的换行和空格格式也可以当作多行注释使用。poem 静夜思 床前明月光 疑是地上霜。 举头望明月 低头思故乡。 print(poem)运行后会完整保留换行格式输出整首诗。4. 原始字符串r/r字符串前加字母r表示取消所有转义字符里面的内容会原样输出。 最常用场景写文件路径、正则表达式避免反斜杠被识别成转义符。# 普通字符串\t 会被识别成制表符 path1 C:\new\test.txt print(path1) # 输出会换行、出现制表符结果错乱 # 原始字符串原样输出路径正常 path2 rC:\new\test.txt print(path2) # C:\new\test.txt 完全正确三、字符串的索引下标取字符字符串是有序的字符序列每个字符都有一个编号这个编号就叫「索引 / 下标」。核心规则正向索引从左往右从 0 开始编号反向索引从右往左从 -1 开始编号只能通过索引取值不能通过索引修改字符字符串不可变后面会讲索引超出范围会直接报错新手高频错误示例演示s Python # 字符 P y t h o n # 正向 0 1 2 3 4 5 # 反向-6-5-4-3-2-1 # 正向索引 print(s[0]) # P 第1个字符 print(s[2]) # t 第3个字符 # 反向索引 print(s[-1]) # n 最后1个字符 print(s[-3]) # h 倒数第3个字符❌ 新手易错索引越界字符串长度是 6最大正向索引是 5写s[6]会报错print(s[6]) # 报错IndexError: string index out of range四、字符串切片截取子串重点 难点切片就是从字符串中截取一段连续的字符得到一个新的子字符串。语法格式字符串[起始索引:结束索引:步长]核心规则必背左闭右开包含起始索引的字符不包含结束索引的字符三个参数都可以省略有默认值起始索引省略默认从开头索引 0开始结束索引省略默认截取到末尾步长省略默认步长为 1一个挨着一个取步长为负数从右往左反向取切片不会报错超出范围会自动截断基础示例s abcdefg # 索引a b c d e f g # 0 1 2 3 4 5 6 # 1. 截取索引1到4包含1不包含4 print(s[1:4]) # bcd # 2. 省略起始从开头到索引3 print(s[:3]) # abc # 3. 省略结束从索引2到末尾 print(s[2:]) # cdefg # 4. 全省略复制整个字符串 print(s[:]) # abcdefg带步长的切片s abcdefg # 步长为2隔一个取一个 print(s[::2]) # aceg # 步长为-1反转字符串最常用技巧 print(s[::-1]) # gfedcba # 从索引5到1反向取步长-1 print(s[5:1:-1]) # fedc五、字符串基础运算1. 拼接把两个字符串首尾连在一起生成新字符串。a Hello b Python res a b print(res) # Hello Python⚠️新手大坑字符串不能直接和数字相加必须先把数字转成字符串。# 错误写法直接报错 # print(年龄 18) # 正确写法 print(年龄 str(18)) # 年龄182. 重复*把字符串重复 N 次生成新字符串。print(加油! * 3) # 加油!加油!加油! print(- * 20) # 打印20个减号做分割线3. 成员运算in/not in判断一个字符 / 子串是否在字符串中返回布尔值True/False。s Hello Python print(P in s) # True print(python in s) # False 区分大小写 print(abc not in s)# True4. 求长度len()统计字符串中字符的个数。s Python编程 print(len(s)) # 8 中文、英文都算1个字符六、转义字符在字符串中一些特殊的字符无法直接打出来需要用\加字母来表示这就是转义字符。转义字符含义\n换行符\t制表符相当于按一下 Tab 键缩进 4/8 个空格\\表示一个普通的反斜杠\\表示一个普通单引号\表示一个普通双引号示例演示# 换行 print(第一行\n第二行\n第三行) # 制表符对齐 print(姓名\t年龄\t成绩) print(小明\t18\t95) print(小红\t17\t98) # 输出反斜杠 print(C:\\Users\\桌面) 不想用转义字符就在字符串前加r用原始字符串前面已经讲过。七、字符串常用内置方法字符串自带非常多工具方法用来处理文本。注意字符串是不可变类型所有修改类的方法都是返回新字符串原字符串不会改变。1. 判断类方法返回 True/False方法作用startswith(子串)判断是否以指定子串开头endswith(子串)判断是否以指定子串结尾isalpha()判断是否全是字母isdigit()判断是否全是数字isspace()判断是否全是空白字符空格、换行、制表符isupper()判断字母是否全大写islower()判断字母是否全小写示例filename test.py print(filename.endswith(.py)) # True 判断是不是Python文件 num_str 12345 print(num_str.isdigit()) # True 判断是不是纯数字字符串 word HELLO print(word.isupper()) # True2. 查找统计类方法方法作用find(子串)查找子串第一次出现的索引找不到返回 -1index(子串)查找子串第一次出现的索引找不到直接报错count(子串)统计子串出现的次数示例s hello python hello world print(s.find(hello)) # 0 第一次出现的位置 print(s.find(abc)) # -1 找不到返回-1 print(s.count(hello)) # 2 出现了2次3. 修改处理类方法返回新字符串方法作用replace(旧子串, 新子串, 替换次数)替换指定子串默认替换全部strip()去除字符串首尾的空白字符空格、换行、制表符lstrip()只去除左边空白rstrip()只去除右边空白upper()全部字母转大写lower()全部字母转小写capitalize()首字母大写其余小写示例# 替换 s 我喜欢JavaJava很好学 new_s s.replace(Java, Python) print(new_s) # 我喜欢PythonPython很好学 # 去空格 user 小明 \n print(user.strip()) # 小明 首尾空白全去掉 # 大小写转换 word Hello World print(word.upper()) # HELLO WORLD print(word.lower()) # hello world4. 分割与拼接① split () 分割字符串 → 列表按指定分隔符把字符串拆成列表默认按空格分割。# 按空格分割 s 苹果 香蕉 橙子 西瓜 fruits s.split() print(fruits) # [苹果, 香蕉, 橙子, 西瓜] # 按逗号分割 data 小明,18,男,90分 info data.split(,) print(info) # [小明, 18, 男, 90分]② join () 拼接列表 → 字符串用指定字符串把列表中的元素拼接成一个完整字符串。lst [北京, 上海, 广州, 深圳] # 用逗号连接 res ,.join(lst) print(res) # 北京,上海,广州,深圳 # 用短横线连接 res2 -.join(lst) print(res2) # 北京-上海-广州-深圳八、字符串格式化重点日常开发必用把变量、表达式动态拼接到字符串里有三种方式主推 f-stringPython3.6 支持最简洁好用。方式 1% 占位符老式写法了解即可用%s占字符串位、%d占整数位、%f占浮点位。name 小明 age 18 score 95.5 msg 姓名%s年龄%d成绩%.1f % (name, age, score) print(msg) # 输出姓名小明年龄18成绩95.5方式 2format () 方法兼容老版本用{}占位后面.format()里填变量。name 小红 age 17 msg 姓名{}年龄{}岁.format(name, age) print(msg)方式 3f-string主推最常用在字符串前加f直接把变量、表达式写在{}里直观又简洁。name 小刚 age 19 # 直接放变量 print(f姓名{name}年龄{age}) # 可以放表达式 print(f明年年龄{age 1}) # 格式化数字保留2位小数 price 9.999 print(f价格{price:.2f} 元) # 价格10.00 元 # 百分比显示 rate 0.856 print(f完成率{rate:.1%}) # 完成率85.6%九、字符串的核心特性不可变性Python 的字符串是不可变类型意思是字符串一旦创建里面的字符就不能修改、删除、增加。示例验证s hello # ❌ 错误尝试通过索引修改字符直接报错 s[0] H # 报错TypeError: str object does not support item assignment正确的修改方式生成一个新字符串重新赋值给变量。s hello # 方式1重新赋值 s Hello # 方式2用replace生成新字符串 s s.replace(h, H) print(s) # Hello十、新手高频易错点总结引号不成对、用中文引号前后引号必须一致且是英文半角索引越界索引从 0 开始最大索引是「长度 - 1」字符串和数字直接相加必须用str()转成字符串再拼接以为方法会修改原字符串所有字符串方法都返回新串原串不变切片记不住左闭右开记住结束索引的字符永远取不到路径里的反斜杠被转义写文件路径记得加r用原始字符串大小写敏感A和a是不同的字符判断、查找都区分大小写