个人主页:黄小黄的博客主页
❤️ 支持我: 点赞 收藏 关注
格言:一步一个脚印才能承接所谓的幸运
本文讲述了高级变量——字符串的相关知识,并对字符串的常见操作进行了归纳总结:对空白字符的处理,字符串查找,字符串逆序,字符串判断,大小写问题等。 另外,也对 Python
中的 切片方法进行了总结。
如果想了解 列表、元组、字典的相关知识,请查阅博主的上篇文章,超链接附上,点击即可到达:【Python】高级变量通关教程上篇(列表、元组、字典)
简介:
Python
中使用 一对双引号、一对单引号 定义一个字符串;for
循环遍历。 关于引号的几点说明:
学习过其他编程语言的小伙伴想必都知道,我们可以使用转义字符,比如:\''
或者 \'
,但是在 Python
实际使用中,建议:
"
,可以使用 '
来定义字符串;’
,可以使用 "
来定义字符串;下面的代码定义了一个字符串:我是’黄小黄’同学
str = "我是'黄小黄'同学"
str 字符串存储结构图如下:
尝试使用 for 逐个字符遍历并打印
str = "我是'黄小黄'同学"
for char in str:
print(char)
这里仅粗略展示
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 中所有的元素(的字符串表示)合并成一个新的字符串 |
看到这儿,想必大家也觉得好多啊!这里博主只是列举了我们常用的一些方法,还有例如字符串对齐等的方法没有给出,其实,这些不用特意去记忆,使用多了自然就记住了,当忘记的时候,记得多动手,去查阅相关的方法说明~~~
⭕️相关方法一览表:
方法名 | 说明 |
---|---|
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() 方法
⌨️ 代码示例:
# 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
运行结果:
我是黄小黄同学
我是黄小黄同学
我是黄小黄同学
前面我们已经介绍过,通过 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) # ['哈', '利', '波', '特', '的', '魔', '法', '世', '界']
简介:
Python
提供了倒序索引,具体见下图:语法如下:
字符串名/列表名/元组名[开始索引:结束索引:步长]
️ 注意点:
需要特别注意的是,如果倒序遍历,记得修改步长为负数
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]) # 我
假设有一段英文,其中有单词中间的字母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)
以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”