文章目录 个人主页:黄小黄的博客主页
❤️ 支持我: 点赞 收藏 落关注
格言:一步一个脚印才能承接所谓的幸运本文来自专栏:Python基础教程
欢迎点击支持订阅专栏 ❤️
- 前言
- 1 字符串说明
- 2 字符串的常见操作
- 2.1 字符串中的常见方法总览
- 2.2 字符串的长度、次数与位置统计
- 2.3 判断字符串
- 2.4 字符串的查找和替换
- 2.5 去除字符串中的空白字符
- 2.6 字符串的拆分和拼接
- 3 切片
- 3.1 切片的概念与说明
- 3.2 切片的使用——以字符串为例
- 4 本文配套练习题*
- 4.1 练习一
- 4.2 练习二
- 写在最后
前言
本文讲述了高级变量——字符串的相关知识,并对字符串的常见操作进行了归纳总结:对空白字符的处理,字符串查找,字符串逆序,字符串判断,大小写问题等。 另外,也对 Python 中的 切片方法进行了总结。
如果想了解 列表、元组、字典的相关知识,请查阅博主的上篇文章,超链接附上,点击即可到达:【Python】高级变量通关教程上篇(列表、元组、字典)
1 字符串说明
简介:
- 字符串就是一串字符;
- 在Python中使用 一对双引号、一对单引号 定义一个字符串;
- 可以使用 索引 获取字符串中 指定位置的字符,与列表、元组类似,字符串中的索引同样是 从0开始;
- 在上篇中,我们提到,字符串同样可以通过 for 循环遍历。
关于引号的几点说明:
学习过其他编程语言的小伙伴想必都知道,我们可以使用转义字符,比如:'' 或者 ',但是在 Python 实际使用中,建议:
- 对于字符串内部有 " ,可以使用 ' 来定义字符串;
- 对于字符串内部有 ’,可以使用 "来定义字符串;
下面的代码定义了一个字符串:我是’黄小黄’同学
str = "我是'黄小黄'同学"
str 字符串存储结构图如下:
尝试使用 for 逐个字符遍历并打印
str = "我是'黄小黄'同学"
for char in str:
print(char)
2 字符串的常见操作 2.1 字符串中的常见方法总览
这里仅粗略展示 python 中的字符串可以使用的方法,大家只需要熟悉有个大概的认识即可,后面会对具体的方法作详细解释。
1️⃣ 判断字符串(返回值为布尔型):
| 方法名 | 说明 |
|---|---|
| str.isspace() | 如果 str 只包含空格,则返回 True |
| str.isalnum() | 如果 str 所有字符都为字母或者数字,则返回 True |
| str.isalpha() | 如果 str 所有字符都为字母,则返回 True |
| str.isdecimal() | 如果 str 只包含数字则返回 True,全角数字 |
| str.isdigit() | 如果 str 只包含数字则返回 True,全角数字、(1)、u00b2 |
| str.isnumeric() | 如果 str 只包含数字则返回 True,全角数字、汉字数字 |
| str.istitle() | 如果 str 是标题化的,即每个单词都是首字母大写,则返回 True |
| str.islower() | 如果 str 中包含至少一个区分大小写的字符,且都是小写,则返回 True |
| str.isupper() | 如果 str 中包含至少一个区分大小写的字符,且都是大写,则返回 True |
| str.startswith(s) | 如果字符串 str 是以 s 开头,则返回 True |
| str.endswith(s) | 如果字符串 str 是以 s 结尾,则返回 True |
2️⃣ 查找与替换字符串:
| 方法名 | 说明 |
|---|---|
| str.find(s,start,end) | 检查 s 是否包含在 str 中,如果指定了 start 和 end 则在指定范围查找(左闭右开),如果包含则返回开始索引,否则返回 -1。与其他查找方法类似,若查找的字符出现多次,则返回第一次出现的索引! |
| str.rfind(s,start,end) | 与 find() 的区别是从右侧开始寻找 |
| str.index(s,start,end) | 与 find() 方法类似,但是不存在则会报错 |
| str.rindex(s,start,end) | 与 index() 方法类似,但是是从右侧开始查找 |
| str.replace(old_str,new_str,num) | 将 str 中的 old_str 替换成 new_str,如果指定了 num,则替换不超过 num 次 |
3️⃣ 大小写转换:
| 方法名 | 说明 |
|---|---|
| str.capitalize() | 将 str 的第一个字符大写 |
| str.title() | 将字符串的每个单词首字母大写 |
| str.lower() | 转换 str 中的所有大写字母为小写 |
| str.upper() | 转换 str 中的所有小写字母为大写 |
| str.swapcase() | 翻转 str 的大小写 |
4️⃣ 对字符串的空白字符进行处理:
| 方法名 | 说明 |
|---|---|
| str.lstrip() | 去除 str 的开始空白字符 |
| str.rstrip() | 去除 str 的结束空白字符 |
| str.strip() | 去除 str 开始和结束的空白字符 |
5️⃣ 对字符串进行拆分和连接:
| 方法名 | 说明 |
|---|---|
| string.split(str,num) | 以 str 为分隔符切片 string,如果有指定 num,则仅分隔 num + 1个子字符串 |
| string.join(seq) | 以 string 为分隔符,将 seq 中所有的元素(的字符串表示)合并成一个新的字符串 |
看到这儿,想必大家也觉得好多啊!这里博主只是列举了我们常用的一些方法,还有例如字符串对齐等的方法没有给出,其实,这些不用特意去记忆,使用多了自然就记住了,当忘记的时候,记得多动手,去查阅相关的方法说明~~~
2.2 字符串的长度、次数与位置统计⭕️相关方法一览表:
| 方法名 | 说明 |
|---|---|
| len(str) | 返回 str 字符串的长度 |
| s.count(str) | 返回 str 字符串在 s 字符串出现的次数 |
| s.index(str) | 返回 str 字符串在 s 字符串第一次出现的索引,如果 s 字符串中不包含 str 字符串,则程序会报错 |
示例代码:
str = "我是'黄小黄'同学"
# 统计字符串长度
str_len = len(str)
print("字符串的长度为: %d" % str_len)
# 统计子串出现的次数
son_str_count = str.count("黄小黄")
print('子字符串"黄小黄"出现的次数: %d' % son_str_count)
# 统计子串出现的位置
son_str_index = str.index("黄小黄")
print('"黄小黄"出现的索引位于原字符串: %d' % son_str_index)
结果:
在概述里,我们学习了许多判断字符串的方法,其中我们介绍到 isspace() 方法用于判断字符串是否全部为空格,实际上,t n r 也可以,相关方法的例子放在下面的代码里,答案还是老样子,放在注释中。
⌨️ 代码示例:
# 1.判断空白字符 str1 = ' t r n' print(str1.isspace()) # True # 2.判断字符串是否为数字 str2 = '123456五' print(str2.isdecimal()) # False print(str2.isdigit()) # False print(str2.isnumeric()) # True str3 = '1.444' print(str3.isdecimal()) # False print(str3.isdigit()) # False print(str3.isnumeric()) # False
从例子中我们还可以看出:三种判断数字的方法均没办法判断小数,另外,isnumeric() 方法还可以判断出中文数字,三种判断数字的方法范围依次增加,实际开发中,我们一般使用的是 isdecimal() 方法
2.4 字符串的查找和替换⌨️ 代码示例:
# 1.查找指定字符串
str1 = '你好,我是黄小黄同学!'
print(str1.find('黄小黄')) # 5
print(str1.find('黄')) # 5
print(str1.find('黄', 0, 5)) # -1
# 2.替换字符串
str2 = '我的博客名:Nezuko627'
str3 = str2.replace('Nezuko627', '小黄小黄不再迷茫')
print(str3) # 我的博客名:小黄小黄不再迷茫
str4 = 'dog dog dog'
print(str4.replace('dog', 'cat')) # cat cat cat
print(str4.replace('dog', 'cat', 2)) # cat cat dog
从上述代码示例我们可以总结出:
- 查找字符串,比如 find 方法,返回的是查找字符串出现第一次的索引;
- 如果指定查找的范围,示例中为索引 0到5,实际上应该解释成[0,5),即左闭右开区间;
- 字符串替换方法,replace 默认替换字符串的所有 old_str,当指定 num 时,则最多替换 num 次,示例中给的是 2。
该部分内容比较简单,不作解释,具体看代码及运行结果即可。
⌨️ 代码示例:
# 1.查找指定字符串
str1 = '你好,我是黄小黄同学!'
print(str1.find('黄小黄')) # 5
print(str1.find('黄')) # 5
print(str1.find('黄', 0, 5)) # -1
# 2.替换字符串
str2 = '我的博客名:Nezuko627'
str3 = str2.replace('Nezuko627', '小黄小黄不再迷茫')
print(str3) # 我的博客名:小黄小黄不再迷茫
str4 = 'dog dog dog'
print(str4.replace('dog', 'cat')) # cat cat cat
print(str4.replace('dog', 'cat', 2)) # cat cat dog
运行结果:
我是黄小黄同学
我是黄小黄同学
我是黄小黄同学
2.6 字符串的拆分和拼接
前面我们已经介绍过,通过 split 方法可以把一个字符串拆分成一个列表,而通过 join 方法,可以把一个列表拼接成一个字符串。
⌨️ 代码示例:
mystr = '哈 利 波 特 的 魔 法 世 界'
mylist = mystr.split(' ')
print(mylist)
mystr_temp = ' '.join(mylist)
print(mystr_temp)
实现结果:
['哈', '利', '波', '特', '的', '魔', '法', '世', '界'] 哈 利 波 特 的 魔 法 世 界
在示例中,将 mystr 字符串按照空格进行了切分,返回的列表使用了 mylist 接收。 而后,使用空格作为分隔符将 mylist 列表中的元素以字符串表示的形式拼接成了个字符串 mystr_temp。
需要注意的是,如果不指定 split 的参数,其默认以空白字符分隔,比如空格、t等,示例如下代码:
mystr = '哈 利 波 特 的 魔 法n世t界' mylist = mystr.split() print(mylist) # ['哈', '利', '波', '特', '的', '魔', '法', '世', '界']
3 切片 3.1 切片的概念与说明
简介:
- 切片 方法适用于 字符串、列表、元组;
- 切片 使用 索引值 来限定范围;
- 列表 和 元组 都是 有序 的集合,都能通过 索引值 获取对应的数据,因此可以使用切片;
- 为了方便使用,Python 提供了倒序索引,具体见下图:
语法如下:
字符串名/列表名/元组名[开始索引:结束索引:步长]
️ 注意点:
- 指定的区间属于左闭右开型;
- 如果是从头开始,则开始索引可以省略,冒号不能省略;
- 如果是到末尾结束,则结束索引可以省略,冒号不能省略;
- 步长可以省略,默认为1。
需要特别注意的是,如果倒序遍历,记得修改步长为负数
3.2 切片的使用——以字符串为例str = '我是黄小黄同学'
1.截取从 2 ~ 5 位置的字符串,截取 2 ~ 末尾的字符串:
str = '我是黄小黄同学' print(str[2:6]) # 黄小黄同 print(str[2:]) # 黄小黄同学
2.截取完整的字符串
str = '我是黄小黄同学' print(str[:]) # 我是黄小黄同学
3.截取完整的字符串,每两个取一个(隔一个取一个)
str = '我是黄小黄同学' print(str[::2]) # 我黄黄学
4.截取字符串,不包含最后一个元素
str = '我是黄小黄同学' print(str[:-1]) # 我是黄小黄同
5.截取末尾两个字符
str = '我是黄小黄同学' print(str[-2:]) # 同学
6.利用切片求字符串的逆序
将步长设置为-1即可,列举两种方式
str = '我是黄小黄同学' print(str[::-1]) # 学同黄小黄是我 print(str[-1::-1]) # 学同黄小黄是我
以下为错误示范
str = '我是黄小黄同学' print(str[0::-1]) # 我
4 本文配套练习题* 4.1 练习一
假设有一段英文,其中有单词中间的字母i被误写为I,请编写程序进行纠正
⌨️ 代码示例:
思路见注释!!!
# 先接收一段英文
message = input("Please enter: ")
# 先将接收的字符串进行判断,所有的 I 改成 i
message = message.replace('I', 'i')
# 对英文句子的首字母大写
message = message.capitalize()
# 输出修改后的结果
print(message)
结果:
有一段英文文本,其中有单词连续重复了两次,编写程序检查重复单词并只保留一个。例如,文本内容为“This is is a dask.”,程序输出为“This is a desk.”。
⌨️ 代码示例:
思路见注释!!!
# 先接收一个句子,以空格为分隔符转成列表接收
message = input('Please enter a sentence: ').split(' ')
result = '' # 接收结果
# 先加入第一个单词
result += message[0]
# 逐个判断单词是否重复,重复则不添加到结果result
for item in range(1, len(message)):
if message[item] == message[item-1]:
continue
else:
result += ' ' + message[item]
# 输出结果
print(result)
结果:
写在最后
以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”



