恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

【Python3基础】04-字符串与格式化

  • 首页
  • 资讯中心
  • /
  • 【Python3基础】04-字符串与格式化

相关资讯

C++ 高频知识体系 · 导航目录 2026/10/19 1:58:04
Python之FastAPI系列 2026/10/19 1:58:04
嵌入式视觉部署实战:从图像采集到模型推理的完整链路与优化 2026/10/19 1:58:04

最新资讯

Django操作静态页面后返回提示:从messages到Ajax JSON的完整实现指南
STM32 PS2遥控小车:舵机控制与振动试验完整实战解析
STM32实现MODBUS RTU从机:功能码全覆盖与高频故障排查
OpenClaw医疗技能实战:从规则引擎到可审计智能体
TVM深度学习编译器全解析:从算子融合到自动调优的模型部署加速指南
造价生做施工图预算,别让 AI 直接替你“拍单价”[特殊字符]

今日推荐

OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)
GPT-6 Sol 与 Luna 怎么选?Chat、Work、Codex 版本差异与 TaoToken 接入实测
openclaw.net 集成 ElBruno.MempalaceNet 记忆系统:把 MCP 配置改到 TaoToken 的完整实践

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

【Python3基础】04-字符串与格式化

发布时间:2026/10/19 1:58:04
【Python3基础】04-字符串与格式化 文章目录 系列文章导航概述本篇知识路线再讲字符串字符串元素的访问方式字符串运算操作字符串常用的函数转义字符字符编码格式化格式化方式怎么选总结参考资料 系列文章导航【Python3基础】01-Python 环境与开发工具【Python3基础】02-输入输出与程序运行【Python3基础】03-基本数据类型与表达式【Python3基础】04-字符串与格式化【Python3基础】05-容器数据类型【Python3基础】06-条件判断与循环【Python3基础】07-函数基础与参数设计【Python3基础】08-高阶函数、闭包与装饰器【Python3基础】09-切片、推导式与迭代协议【Python3基础】10-类与对象【Python3基础】11-继承、多态与对象协议【Python3基础】12-动态类型与元编程【Python3基础】13-Python 常用设计模式【Python3基础】14-模块、包与虚拟环境【Python3基础】15-文件、目录与内存流【Python3基础】16-序列化、异常与调试【Python3基础】17-常用标准库与第三方库【Python3基础】18-多进程、多线程与协程【Python3基础】19-Socket 与 TCP、UDP 编程【Python3基础】20-网络应用与异步 IO概述字符串不只是文字它还是程序与用户、文件和网络交换信息的主要载体。本篇集中讲解字符串的索引、遍历、常用方法、转义与格式化。字符串是不可变对象对它执行替换、拼接等操作时通常会得到一个新字符串。理解这一点能避免很多看似修改成功、实际原值不变的问题。本篇知识路线字符串 P y t h o n 正索引 0 1 2 3 4 5 负索引 -6 -5 -4 -3 -2 -1再讲字符串在前面基本数据类型一节我们学过字符串类型字符串类型严格意义上来说不属于基本数据类型 因为字符串是由多个单字符类型的数据组成的复合类型。但 Python 不支持单字符类型单字符在 Python 中也是作为一个字符串使用这个和其它语言不同 Python 语言内置字符串类型字符串是Python中最常用的数据类型之一。我们本节课再次深入学习一下字符串的特点和函数以及编码格式。字符串元素的访问方式字符串是有序集合有序集合并不是集合里面的数据是有序的 有序集合的意思是可以通过下标访问的集合。我们可以通过下标访问字符串注意第一个元素是从下标 0 开始越界访问 Python 解释器会报异常错误。strone老鸟Pythonprint(strone[0])print(strone[100])# 越界访问会报异常字符串是个常量无论通过何种运算都不会修改字符串本身的值 我们不能通过该变量的索引修改它所指向的字符串内的字符 但我们可以改变该变量指向的字符串。strone老鸟Pythonstrone[0]H# 错误不可以修改字符串本身的值stroneHello World# 正确可以修改变量 strone 的指向print(strone)字符串运算字符串支持一系列的运算但遵守一定的规则我们列举出常用的字符串运算如下表格。运算符解释运算规则字符串连接只能是字符串和字符串相加扩大字符串的倍数只能是整数和字符串相乘负整数和字符串相乘输出空字符串 []通过索引访问字符串内元素重要的事情再说一遍无论什么运算符操作字符串都不会修改字符串本身的值。stroneHellonewstrstrone[0:3]# 返回索引 0 到 3不包含3的子串print(strone)print(newstr)操作字符串常用的函数操作字符串的函数有字符串本身内置的函数也有非内置的函数 这些函数可以对字符串进行一系列的操作下面表格是字符串常用的一些函数。函数解释性质len计算字符串的长度并返回不是字节长度Python 内置函数find字符串内查找子串并返回子串首字母所在的索引否则返回 -1字符串自带函数replace字符串内查找子串并返回替换后的字符串字符串自带函数lower把字符串内字符串内的所有字母变为小写并返回字符串自带函数upper把字符串内字符串内的所有字母变为大写并返回字符串自带函数重要的事情说三遍无论什么函数操作字符串都不会修改字符串本身的值。strone老鸟Pythonnewstrstrone.replace(Python,Hello)print(strone)print(newstr)strtwoHello Worldlowerstrstrtwo.lower()print(strtwo)print(lowerstr)strthreeBird Pythonupperstrstrthree.upper()print(strthree)print(upperstr)转义字符在编程语言里有很多特殊字符它们起着各种各样的作用。 有些特殊字符没有办法用普通字符表示需要进行转义。 python用反斜杠 \ 转义字符下表列举了一些常用的需要转义的字符。常用的转义字符解释适用方式\反斜杠单引号双引号三引号’单引号单引号双引号三引号双引号单引号双引号三引号\t制表符单引号双引号三引号\n换行单引号双引号三引号注意Python 中可以用 r 来禁止字符转义试一试下面的代码。stronerH\te\rl\nl\o\print(strone)字符编码由于计算机是美国人发明的因此最早只有 127 个字符被编码到计算机里也就是大小写英文字母、数字和一些符号这个编码表被称为 ASCII 编码范围为 0127比如字符 A 的编码是 65字符 1 的编码是 49。我们知道 1 个字节可以表示的范围是 0255所以我们只需要 1 个字节既可以表示出来所有的 ASCII 编码。stroneAprint(ord(strone))# ASCII 值为 65用 1 个字节的 2 进制表示为01000001strtwo1print(ord(strtwo))# ASCII 值为 33用 1 个字节的 2 进制表示为00100001但是要处理中文用 1 个字节显然是不够的至少需要 2 个字节 用两个字节表示一个字符包括英文数字可见字符等的编码我们称为 UNICODE 编码。我们知道 2 个字节的表示的范围为 0~65535注意我们在字符串前面加上 u 来告诉计算机用 UNICODE 编码方式存储字符串。stroneuAprint(ord(strone))# UNICODE 值为 65用 2 个字节的 2 进制表示为00000000 01000001strtwou牛print(ord(strtwo))# UNICODE 值为 29275用 2 个字节的 2 进制表示为01110010 01011011我们来分析一下上面的例子汉字“牛”对应的十进制为 29275显然已经超出了 ASCII 编码的范围所以用 1 个字节无法表示我们只能用两个字节的 UNICODE 编码方式对应的二进制为 01110010 01011011。字母 A 对应的十进制为 65可以使用 1 个字节的 ASCII 编码方式对应的二进制为 01000001当然我们也可以使用 2 个字节的 UNICODE 编码方式对应的进制为 00000000 01000001。我们来考虑一个问题如果我们写的字符串文本只有极个别中文而大部分都是英文因为有中文的存在我们无法使用 ASCII 编码方式进行统一编码只能使用 UNICODE 编码方式而采用 UNICODE 编码比 ASCII 编码需要多一倍的存储空间在存储和传输上就十分不划算如果有一种编码可以智能的对文本中的英文采用 ASCII 编码方式对中文采用 UNICODE 编码方式那该多好啊有的就是 UTF-8 编码。UTF-8 编码把一个 UNICODE 字符根据不同的数字大小编码成 1-6 个字节比如如果是常用的英文字符、数字字符、英文符合字符等都被编码成 1 个字节一般汉字通常是 3 个字节只有很生僻的字符才会被编码成 4-6 个字节。在 Python 3 中字符串前面什么都不要加默认就是采用 UTF-8 编码如果加上 u 就是 UNICODE 编码。strone you # UTF-8 编码共占用 3 个字节和 ASCII 编码一样 1 个英文字符 1 个字节 strtwo 牛掰 # UTF-8 编码共占用 6 个字节1 个中文字符通常是 3 个字节 strthree you牛掰 # UTF-8 编码共占用 9 个字节(1 个英文字符 1 个字节1 个中文字符通常是 3 个字节 strfour uyou # UNICODE 编码共占用 6 个字节1 个英文字符 2 个字节 strfive u牛掰 # UNICODE 编码共占用 4 个字节1 个中文字符 2 个字节 strsix uyou牛掰 # UNICODE 编码共占用 10 个字节1 个英文字符 2 个字节1 个中文字符 2 个字节Python 内置的 len 函数可以计算字符串的长度但是这个长度是什么意思呢我们通过查看 len 函数的源码发现它内部逻辑有个判断如果计算的字符串是 UNICODE 编码方式则返回值是字符串所占的字节数除以 2。如果字符串是 UTF-8 编码对于字符串里面有 ASCII 字符则按字节计算对于字符串里面的中文字符则按该中文字符所占的字节数除以编码该中文字符所用的字节数 。stroneyou# UTF-8 编码共占用 3 个字节和 ASCII 编码一样每个英文字符占 1 个字节strtwo牛掰# UTF-8 编码共占用 6 个字节每个中文字符通常占 3 个字节strthreeyou牛掰# UTF-8 编码共占用 9 个字节(每个英文字符占 1 个字节每个中文字符通常占 3 个字节print(len(strone))# 31 1 1print(len(strtwo))# 23/3 3/3print(len(strthree))# 51 1 1 3/3 3/3strfouruyou# UNICODE 编码共占用 6 个字节每个英文字符占 2 个字节strfiveu牛掰# UNICODE 编码共占用 4 个字节每个中文字符占 2 个字节strsixuyou牛掰# UNICODE 编码共占用 10 个字节每个英文字符占 2 个字节每个中文字符占 2 个字节print(len(strfour))# 32/2 2/2 2/2print(len(strfive))# 22/2 2/2print(len(strsix))# 52/2 2/2 2/2 2/2 2/2Python 内置的 encode 函数可以把字符串类型转换为字节类型encode 的参数决定对字符进行编码时每个字符使用几个字节。stroneyou牛掰print(type(strone))# str 类型print(len(strone))# 51 1 1 3/3 3/3strtwostrone.encode(utf8)# 按 utf8 方式编码每个 ascii 占 1 个字节每个中文占 3 个字节print(type(strtwo))# bytes 类型print(strtwo)# byou\xe7\x89\x9b\xe6\x8e\xb0print(len(strtwo))# 91 1 1 3 3strthreestrone.encode(gbk)# 按 gbk 方式编码每个 ascii 占 1 个字节每个中文占 2 个字节print(type(strthree))# bytes 类型print(strthree)# byou\xc5\xa3\xea\xfeprint(len(strthree))# 71 1 1 2 2说明gbk 编码是微软出的对含有中文的字符串进行编码的一种格式gbk 对 ascii 使用 1 个字节对中文使用 2 个字节。注意我们对字符串使用 encode 编码后的字节是由 encode 的参数决定的而不是由被编码的字符是什么编码格式决定的 比如大家可以把strone you牛掰改成strone uyou牛掰做一下验证结果和上面是一样的。同样我们可以使用 decode 函数把字节类型数据解码成字符串类型。stronebyou\xe7\x89\x9b\xe6\x8e\xb0print(type(strone))# bytes 类型print(len(strone))# 91 1 1 3 3strtwostrone.decode(utf8)# 按 utf8 方式解码每个 ascii 转为 1 个字符每 3 个非 ascii 转为 1 个中文print(type(strtwo))# str 类型print(strtwo)# you牛掰print(len(strtwo))# 51 1 1 3/3 3/3stronebyou\xc5\xa3\xea\xfestrthreestrone.decode(gbk)# 按 gbk 方式解码每个 ascii 转为 1 个字符每 2 个非 ascii 转为 1 个中文print(type(strthree))# str 类型print(strthree)# you牛掰print(len(strthree))# 51 1 1 2/2 2/2格式化我们知道 print 函数会把输出的各种类型数据全变成字符串输出到屏幕上 当其中输出的语句内容有变量的时候我们需要根据这些变量的类型进行格式化。name如花age18print(%s的年龄是%d%(name,age))对应的被格式化的变量类型对应的占位符一般如下表。占位符被格式化成的类型被格式化的数据类型%d整数intfloatbool%f浮点数intfloatbool%s字符串所有类型%x十六进制整数int,float,bool格式化方式怎么选已有代码中会同时见到%、str.format()和 f-string。阅读旧代码时三种方式都要能看懂自己编写 Python 3 代码时可以优先选择结构清楚的 f-string。无论采用哪一种方式都不要用字符串拼接去构造需要参数化处理的数据库语句或系统命令。总结字符串不可变索引、切片和常用方法会得到结果但不会原地修改原字符串。len()返回字符串中的字符数显示宽度可能不同。根据用途选择转义字符、多行字符串和格式化方式拼接或转换后仍应检查结果是否符合预期。比较字符串内容用is比较对象身份。可以对原字符串和lower()的结果分别使用这两个运算符观察差别。参考资料再讲字符串原始网页

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号