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)
🍊结果:
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
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。
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)
🍑 实现结果:
['哈', '利', '波', '特', '的', '魔', '法', '世', '界'] 哈 利 波 特 的 魔 法 世 界