尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

一篇吃透Python字符串!从入门API到花式操作全指南

一篇吃透Python字符串!从入门API到花式操作全指南
📅 发布时间:2026/7/19 4:26:07

前言

写Python没人能绕开字符串,打印日志、处理文本、接口传参、爬虫解析全靠它。不少新手只会用""包一段文字,索引、切片、格式化、各类内置方法一团乱,找个字符报错、分割字符串乱码、大小写转换写一堆if判断,踩坑踩得头大。今天一次性把字符串全套操作捋明白,逻辑严谨不遗漏,语言轻松不枯燥,看完直接收藏当速查手册!

一、字符串基础:什么是字符串

简单说,被单引号、双引号、三引号包裹的文本内容就是字符串。

重中之重:字符串是不可变序列

这是所有字符串操作的底层核心,一定要刻进脑子里:字符串一旦创建完成,不能直接修改内部任意单个字符,不存在原地修改的操作。不管你调用大小写、替换、切片、剔除空白等任何方法,都不会改动原始字符串,只会生成一段全新字符串作为返回值。

s = "python" # 尝试直接修改字符,直接报错 # s[0] = 'P' # TypeError: 'str' object does not support item assignment # 正确写法:接收新返回的字符串 new_s = s.capitalize() print(s) # 原字符串不变:python print(new_s) # 新字符串:Python

后续所有内置方法全都遵循这个规则,忘记不可变特性很容易写出丢数据的bug。

s1 = "普通双引号字符串" s2 = '单引号也能用' s3 = """多行文本直接换行不用转义"""

二、转义字符:解决字符串里的“冲突符号”

如果文本内部自带引号、换行、制表符、反斜杠,直接写会语法报错,这时候就要出动转义符\:

  • \'、\":字符串内部输出单/双引号
  • \n:换行、\t:制表空格
  • \\:输出单纯反斜杠

不想转义可以用原始字符串r"xxx",文件路径处理必备:

# 转义示例 print("我说:\"Python字符串超好用\"") # 原始字符串无视转义 path = r"C:\user\code\python"

三、三种字符串格式化,按需选用

日常拼接字符串别傻傻用+硬拼,效率低还难读,三种格式化按需拿捏:

  1. % 老式格式化:兼容老旧项目,适合简单占位
  2. str.format():灵活传参、位置匹配、填充对齐
  3. f-string(推荐):简洁直观,Python3.6+首选
name = "码农" print(f"我是{name},精通字符串操作") print("我是{},精通字符串操作".format(name))

四、索引:精准定位单个字符

字符串是有序序列,每个字符自带下标索引:从左从0开始,从右从-1开始。通过字符串[下标]取出单个字符,下标超出范围直接抛索引报错。再次提醒:只能读取,不能赋值修改字符!

s = "hello" print(s[0]) # h print(s[-1]) # o

五、切片:截取一段子串(Python字符串神技)

格式:字符串[start:end:step]

  • start:起始下标(包含),默认0
  • end:结束下标(不包含),默认末尾
  • step:步长,负数实现倒序截取

切片超出下标不会报错,自动截断边界,比索引容错性高一大截。切片只会产出新字符串,原文本丝毫不变。

s = "hello world" print(s[0:5]) print(s[::-1]) # 字符串反转

六、遍历字符串:逐个读取字符

两种主流遍历方式,按需使用:

  1. for循环直接遍历字符:最简写法
  2. for+range+len:同时拿到下标+字符

遍历仅读取字符,全程无法修改原字符串内容。

s = "python" # 只拿字符 for char in s: print(char) # 下标+字符 for i in range(len(s)): print(i, s[i])

七、字符串核心内置方法大全(附踩坑详解)

全文重点,按功能分类整理,附带代码演示与避坑要点,逻辑清晰不混乱。所有方法统一特性:不改变原字符串,返回全新字符串/数值/布尔值。

7.1 查找字符:index/rindex VS find/rfind(高频踩坑点)

两个功能高度相似的工具,核心区别只有一句话:找不到目标时的处理逻辑

  1. index、rindex:找到返回下标,找不到直接抛出ValueError程序崩溃
    • index:从左往右搜;rindex:从右往左搜
  2. find、rfind:找到返回下标,找不到返回-1,程序不会中断
    • find:从左往右搜;rfind:从右往左搜

两者都支持传参(目标串, start, end),限定查找区间,默认全字符串检索。

s = "hello world" # index找不到直接报错,稳妥写法先判断in if "llo" in s: print(s.index("llo")) # find容错性拉满,不用额外判断 print(s.find("ll0")) # 不存在返回-1 # 指定查找区间 print(s.find("l", 4, 5)) print(s.rfind("l"))

7.2 count:统计子串出现次数

用法:字符串.count(子串, start, end),区间内没有匹配内容返回0,适合统计关键词出现频次:

print("hello world".count("l", 4))

7.3 大小写转换全家桶

五种转换各司其职,不用自己写判断替换,全部生成新字符串:

  1. lower():全部转为小写
  2. upper():全部转为大写
  3. capitalize():整个字符串首字母大写,其余全小写
  4. title():每个单词首字母大写
  5. swapcase():大小写互相反转
text = "heLlo WorlD" print(text.lower()) print(text.upper()) print(text.capitalize()) print(text.title()) print(text.swapcase())

7.4 文本对齐:排版打印专用

做控制台表格、格式化输出必备四个对齐方法,统一格式方法(总长度, 填充字符),填充字符不传默认空格:

  1. center(width, fillchar):居中对齐
  2. ljust(width, fillchar):左对齐,右侧填充
  3. rjust(width, fillchar):右对齐,左侧填充
  4. zfill(width):特殊右对齐,左侧自动补0,数字字符串格式化神器
s = "hello world" print(s.center(20, "*")) print(s.ljust(20, "*")) print(s.rjust(20, "*")) print(s.zfill(20))

7.5 判断首尾字符:startswith & endswith

快速判断字符串是否以指定内容开头/结尾,返回布尔值True/False,文件后缀判断、文本前缀筛选常用:

text = " hello world " print(text.startswith(" ")) print(text.endswith(" "))

7.6 剔除首尾字符:strip系列

默认剔除首尾空白(空格、换行、制表符),传参则剔除指定符号;原字符串不会被删减,需要用变量接收结果:

  1. strip():左右两边同时剔除
  2. lstrip():只剔除左侧
  3. rstrip():只剔除右侧
print(" hello world ".strip()) print("+++hello world+++".strip("+")) print("+++hello world+++".lstrip("+")) print("+++hello world+++".rstrip("+"))

7.7 切割、拼接、替换,文本处理三巨头

1)join:序列拼接字符串

和split反向操作,用指定分隔符把列表、字符串等序列里的元素拼为一整段文本,效率远超+拼接:

print("++".join("hello")) print(" ".join(['hello', 'world']))
2)split:切割字符串为列表

不传参数默认按所有空白分割,传入字符则以该字符切割,可额外限制切割次数:

print("hello world".split()) print("hello world".split('l'))
3)replace:批量替换文本

参数:replace(旧内容, 新内容, 替换次数),指定次数则只替换前N个匹配项,不指定全局替换;替换结果是新字符串,原文本纹丝不动:

print("hello world hello china".replace("hello", "hi", 1))

7.8 编码与解码:字符串与字节流转换

网络传输、文件读写底层都是字节流,两套转换规则必须分清:

  1. encode(编码格式):字符串 → 字节流bytes,输出带b''标识
  2. decode(编码格式):bytes字节流 → 原始字符串,编码不匹配直接乱码报错

常用编码:utf-8、gbk,中文Windows环境文件常使用gbk编码:

# 编码 print("hello world 123 中国".encode("gbk")) # 解码 print(b'hello world 123 \xd6\xd0\xb9\xfa'.decode("gbk"))

7.9 is系列判断方法,校验文本类型

全部返回布尔值,表单校验、数据清洗高频使用:

  1. isalpha():全部由纯字母组成
  2. isdigit():全部由纯数字组成
  3. isalnum():仅包含字母+数字,无符号空格
  4. islower():所有字母全小写
  5. isupper():所有字母全大写
  6. istitle():每个单词首字母大写,其余小写
print("az".isalpha()) print("19".isdigit()) print("19az".isalnum()) print("Az".islower()) print("Az".isupper()) print("Az Bz".istitle())

相关新闻

  • 三、业务效果(定性)
  • Python条件判断if-else语句详解与实战技巧
  • Unity专业版功能解析与合法开发环境搭建指南

最新新闻

  • 英雄联盟智能助手Seraphine:三步快速提升排位胜率的实战指南
  • ESP8266 SDK开发与TCP客户端实现指南
  • 嵌入式系统低功耗设计:片上存储器与相机ISP硬件架构解析
  • Unity性能优化:对象池技术原理与C#实现详解
  • u-boot2013.01.01 Makefile解析与TQ210开发实践
  • 2026年7月最新天梭深圳来福士广场维修保养服务电话 - 天梭服务中心

日新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

周新闻

  • SaaS软件行业GEO实践:AI搜索时代的品牌可见性与获客新路径
  • 什么是PCTFE?医药高端包装的“防潮王牌“材料
  • 【JVM调优实战】16-可视化利器-JConsole-VisualVM-JMC

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号