news 2026/5/28 21:26:54

Python语言编程导论第六章 字符串

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python语言编程导论第六章 字符串

内容提要

概述

通用序列操作

字符串格式化

字符串方法

正则表达式简介

一、概述

在Python中,字符串是除数字外最重要的数据类型。

字符串无处不在:将字符串输出到屏幕上;从用户的键盘输入读取字符串;文件通常被视为大型字符串;网页大部分是由文本组成的。

字符串是一种聚合数据结构,可充分利用索引和切片—用于从字符串中提取子串。 而Python正则表达式库,是一种用来处理字符串的微型语言,但功能强大。

二、通用序列操作

Python中,字符串、列表和元组都属于序列。 序列有一些通用的操作。

包括:索引(indexing)、分片(slicing)、加(adding)、乘(multiplying)、检查某个元素是否属于序列的成员(成员资格)、计算序列长度、找出最大元素和最小元素等。

1、索引

序列中的所有元素都是有编号的—从0开始递增。这些元素可以通过编号分别访问。索引有正索引和负索引,可根据实际情况选用。 字符串就是一个由字符组成的序列,处理字符串时,经常需要访问其中的各个字符。索引0指向第1个字符。

例如:字符串’apple’的正索引和负索引

例6-1:字符串索引应用

例6-2:计算给定字符串的编码总和

2、分片

与使用索引访问单个元素类似,可以使用分片操作来访问一定范围内的元素。

分片是实际应用中经常使用的技术,被截取的部分称为“子串” Python 3支持的分片格式为:S[i:j:k] 表示:索引S对象中的元素,从索引为i直到索引为j-1,每隔k个元素索引一次,第三个限制k为步长,默认为1,也可以使用负数作为步长,步长-1表示分片将会从右至左进行而不是通常的从左至右,实际效果主是将序列反转。 在Python中,还可以使用split()函数来截取字符串。

例6-3:字符串分片

例6-4:返回文件名中的扩展名

3、序列相加(字符串连接、合并)

之前介绍过,使用“+”完成。除此之外,还可以使用join函数和reduce函数实现字符串的合并。

注意:不同类型的数据不能相加。

如:

4、乘法

用数字x乘以一个序列会生成新的序列,在新的序列中,原来的序列被重复x次。

5、成员资格

为了检查一个值是否在序列中,可以使用in运算符。该运算符检查某个条件是否为真,若为真返回True,否则返回False。

例如:

6、长度、最小值和最大值

len、min和max都是内置函数。 len—返回序列中包含的元素个数。 min—返回序列中的最小值。 max—返回序列中的最大值。 例如:

三、字符串格式化

1、字符串格式化

C语言使用函数printf()格式化输出结果,Python也提供了类似功能。

Python将若干值插入带有“%”标记的字符串中,从而可以按照指定格式输出字符串。

语法: "%s" % str1 "%s %s" % (str1, str2)

例6-5:格式化字符串

例6-6:带精度的格式化

Python格式化字符串的替代符及含义:

例6-7:符号、对齐和用0填充

在字段宽度和精度之间还可以放置一个“标志”,该标志可以是零、加号、减号或空格。零表示数字将会用0填充。

2、字符串的转义字符

计算机中存在可见字符与不可见字符。可见字符指键盘上的字母、数字和符号。不可见字符是指换行、回车、制表符等字符。

对于不可见字符,Python使用的方法类似于C语言,都是使用“\”作为转义字符。

Python还提供了函数strip()、lstrip()、rstrip()去除字符串中的转义字符。

Python常用的转义字符及其含义:

例6-8:转义字符应用

四、字符串函数(方法)

Python字符串自带了大量很有用的函数,要查看这些函数,可调用dir并将参数指定为任何字符串(如:dir(' '))。 虽无必要准确记住所有函数功能,但最好有个大致了解,这样有益于需要时去查询具体使用。

字符串函数的详细介绍可参阅其文档字符串或Python在线文档(https://docs.python.org/3/)。 此处介绍常用的字符串函数。

1、测试函数

用于检测字符串是否为特定格式的函数,它们组成了一个最大的字符串函数组。 测试函数都返回True或False,因此也称为布尔函数或谓词。

字符串测试函数:

例如:

2、字符串的查找函数

说明:函数index和find之间的差别在于没有找到指定子串的情形。函数index引发异常ValueError,而函数find将返回-1。

例6-9:查找函数应用

3、字符串的替换函数

Python字符串自带了两个替换函数,如下表所示。

注意:使用替换函数可轻松地删除字符串中的子串。

例6-10:字符串替换

4、字符串的合并

之前介绍过,Python可使用“+”连接不同的字符串。 除此之外,还可以使用join函数(是split方法的逆方法)和reduce函数实现字符串的合并。

例6-11:使用join函数连接字符串

例6-12:使用reduce函数连接字符串

5、拆分函数

拆分函数将字符串拆分成多个子串。如下表所示。

例6-13:拆分字符串

例6-14:使用split()函数获取子串

6、字符串与日期的转换

在实际应用中,经常需要将日期类型与字符串类型互相转换。 Python提供了time模块处理日期和时间。

函数strftime()可以实现从时间到字符串的转换。 字符串到时间的转换要进行两次转换,需要使用time模块和datetime类。

strftime()函数:

声明: strftime(format[, tuple])->string

说明: 参数format表示格式化日期的特殊字符。

例如:“%Y-%m-%d”相当于“yyyy-MM-dd”. 参数tuple表示需要转换的时间,用元组存储。元组中的元素分别表示年、月、日、时、分、秒。 函数返回一个表示时间的字符串。

字符串到时间的转换步骤:

第一次转换:调用函数strptime()将字符串转换为一个元组。其声明为: strptime(string, format)->struct_time 函数返回一个存放时间的元组。

第二次转换:将表示年、月、日的3个变量传递给函数datetime()。datetime类的datetime()函数格式为: datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]) 函数返回一个date类型的变量。

格式化日期的常用标记:

例6-15:时间与字符串的互相转换

7、改变大小写函数

说明:在以上函数中,Python都创建并返回一个新字符串,Python不会真正修改原字符串。

例如:

8、设置格式函数

例6-16:设置格式

9、剥除函数

剥除函数用于删除字符串开头或末尾多余的字符。

如下表所示。 默认情况下,剥除空白字符;如果指定了字符串参数,则剥除该字符串中的字符。

例6-17:字符串剥除

例6-18:去除转义字符

10、字符串比较

Python直接使用“==”“!=”操作符比较两个字符串的内容。如果比较的两个变量的类型不相同、比较的内容也不相同。

若要比较字符串的部分内容,可以先截取子串,再使用“==”“!=”操作符进行比较。 若要比较字符串的开头和结尾部分,更方便的方式是使用startswith()或endswith()函数。

startswith()与endswith()的声明为: startswith(substring, [start [,end]]) endswith(substring, [start [,end]])

例6-19:字符串比较

例6-20:比较字符串开始和结束处

五、正则表达式简介

虽然Python字符串提供了众多实用的函数,但实际处理字符串时,常常需要更强大的工具。鉴于此,Python提供了一种用于复杂字符串处理的微型语言—正则表达式,但正则表达式并不是Python的一部分。

正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。实际上,正则表达式是一种简练描绘一组字符串的方式,可用于高效地执行常见的字符串处理任务,如匹配、替换和分拆字符串。

使用正则表达式编写一些逻辑验证非常方便,如:电子邮件及电话号码的格式验证。Python提供了re模块实现正则表达式的验证。

1、正则表达式的构成

正则表达式是包含元字符(metacharacter)的列表。 Python支持的正则表达式元字符和语法。

2、re模块中一些重要函数

例6-21:

3、re模块中匹配对象的重要方法

例22:

例6-23:编写一个程序,从键盘输入若干字符串,当输入done或quit则结束程序。

使用正则表达式用户输入done或quit结束程序:

例6-24:假设要识别逗人的字符串:开头为一个或多个’ha’,末尾为一个或多个’!’

4、关于正则表达式的说明

Python的re模块规模庞大,其中有大量正则表达式函数可用于执行字符串处理任务,如匹配、分拆和替换;还有提高常用正则表达式处理速度的技巧,以及众多匹配常用字符的捷径。 re模块的文档可参见:https://docs.python.org/3/library/re.html。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 2:19:42

LobeChat能否模拟谈判?商务沟通预演工具

LobeChat能否模拟谈判?商务沟通预演工具 在企业日常运营中,一次关键的采购谈判可能直接影响数百万成本;一场国际商务对话中的措辞偏差,甚至可能引发合作破裂。传统上,这类高风险沟通依赖经验积累和有限的角色扮演训练—…

作者头像 李华
网站建设 2026/5/28 13:11:22

Qwen3-8B与vLLM协同推理加速实战

Qwen3-8B与vLLM协同推理加速实战 在当前AI应用快速落地的浪潮中,如何用有限的硬件资源跑出高性能的大模型推理服务,成了开发者绕不开的现实课题。尤其对于中小企业和独立开发者而言,动辄百亿参数、需要多张A100支撑的“巨无霸”模型显然不现实…

作者头像 李华
网站建设 2026/5/28 15:08:14

Qwen3-VL-30B本地部署与多模态实战指南

Qwen3-VL-30B本地部署与多模态实战指南 在AI从“能说会算”迈向“看得懂、想得清”的今天,视觉语言模型(Vision-Language Model, VLM)正成为智能系统的“眼睛与大脑”。而在这条进化的关键路径上,Qwen3-VL-30B 的出现&#xff0c…

作者头像 李华
网站建设 2026/5/26 7:18:47

11、Linux 系统写作与编辑的语法和参考工具使用指南

Linux 系统写作与编辑的语法和参考工具使用指南 在 Linux 系统中进行写作和编辑时,拼写检查器、字典和参考文件等工具和资源能极大地提升效率和准确性。下面将详细介绍这些工具的使用方法。 1. 拼写检查 在 Linux 系统中,有多种方式可以对文本和文件进行拼写检查。系统字典…

作者头像 李华
网站建设 2026/5/28 3:57:26

Wan2.2-T2V-A14B服务雪崩?反脆弱LLM运维指南

Wan2.2-T2V-A14B服务雪崩?反脆弱LLM运维指南从一次崩溃说起:当视频生成卡在第8秒 凌晨两点,系统监控突然报警。你揉着发酸的眼睛点开告警详情——Wan2.2-T2V-A14B 的 GPU 内存使用率冲上 99%,请求队列堆积超过 300,P99…

作者头像 李华
网站建设 2026/5/27 21:51:20

Qwen-Image可商用吗?是否需要署名?

Qwen-Image可商用吗?是否需要署名? 在广告公司通宵赶制新年海报时,设计师突然发现客户要求的“汉服少女外滩夜景赛博朋克”组合,竟被AI一键生成——画面连霓虹灯牌上的中英双语文字都精准呈现,破损墙面自动修复&#x…

作者头像 李华