【Python】高级变量通关教程下篇(字符串与切片专题详解)

个人主页:黄小黄的博客主页
❤️ 支持我: 点赞 收藏 关注
格言:一步一个脚印才能承接所谓的幸运

本文来自专栏:Python基础教程
欢迎点击支持订阅专栏 ❤️
【Python】高级变量通关教程下篇(字符串与切片专题详解)_第1张图片

文章目录

  • 前言
  • 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 实际使用中,建议:

  1. 对于字符串内部有 " ,可以使用 ' 来定义字符串;
  2. 对于字符串内部有 ,可以使用 "来定义字符串;

下面的代码定义了一个字符串:我是’黄小黄’同学

str = "我是'黄小黄'同学"

str 字符串存储结构图如下:
【Python】高级变量通关教程下篇(字符串与切片专题详解)_第2张图片
尝试使用 for 逐个字符遍历并打印

str = "我是'黄小黄'同学"

for char in str:
    print(char)

【Python】高级变量通关教程下篇(字符串与切片专题详解)_第3张图片


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)

结果:
【Python】高级变量通关教程下篇(字符串与切片专题详解)_第4张图片

2.3 判断字符串

在概述里,我们学习了许多判断字符串的方法,其中我们介绍到 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

从上述代码示例我们可以总结出:

  1. 查找字符串,比如 find 方法,返回的是查找字符串出现第一次的索引;
  2. 如果指定查找的范围,示例中为索引 05,实际上应该解释成[0,5),即左闭右开区间
  3. 字符串替换方法,replace 默认替换字符串的所有 old_str,当指定 num 时,则最多替换 num 次,示例中给的是 2

2.5 去除字符串中的空白字符

该部分内容比较简单,不作解释,具体看代码及运行结果即可。
⌨️ 代码示例:

# 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 提供了倒序索引,具体见下图:
    【Python】高级变量通关教程下篇(字符串与切片专题详解)_第5张图片

语法如下:

字符串名/列表名/元组名[开始索引:结束索引:步长]

注意点:

  1. 指定的区间属于左闭右开型;
  2. 如果是从头开始,则开始索引可以省略冒号不能省略
  3. 如果是到末尾结束,则结束索引可以省略冒号不能省略
  4. 步长可以省略,默认为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)

结果:
【Python】高级变量通关教程下篇(字符串与切片专题详解)_第6张图片

4.2 练习二

有一段英文文本,其中有单词连续重复了两次,编写程序检查重复单词并只保留一个。例如,文本内容为“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)

结果:
【Python】高级变量通关教程下篇(字符串与切片专题详解)_第7张图片


写在最后

以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
在这里插入图片描述

共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”
在这里插入图片描述

你可能感兴趣的:(Python基础,python,开发语言,pycharm,学习,人工智能)