字符串
终于到了字符串这个环节了,字符串可以说是所有题型必考的一个点,所以必须要掌握,我们这里也会细细去说,加油加油加油!
字符串的定义
字符串可以理解为是没有意义的一串字符,它不同于变量之类的其他符号,他就只是表达一串字符,没有任何引申含义,当然,对于人来说,他可能会有一些内在的含义,但至少对于机器而言,他只是一串毫无意义的字符而已。
字符串的格式
单引号或者双引号引起来的一群或者一个符号的一个合集。
字符串的性质
-
字符串是存在下标的,引用他里面的字符可以采取和列表完全相同的方法,即引用下标的方法。所以,字符串是有序的容器型数据类型。
-
字符串是不可变的,这里的不可变更多的指向不可以直接改变,比如说像列表一样,直接去改变其中的第一个元素,对于列表,我们往往可以直接处理, list1[0]=‘1’ ,通过这样简单的方式,我们就可以直接将列表指定元素进行修改,对于字符串而言,这样的取值可以,但是这样的修改是不可以的,我们如果想修改字符串,只可以进行加减,而不可以直接修改。
-
字符串可以用单引号、双引号、三引号来作为容器符号,例如下面的:
a = '45454512121' b = "dasdadadada" c='''dasddasddad''' # 上面的三种情况都是合格的字符串
-
字符串的数据类型是 str 。有些情况。我们可以直接将其他类型的数据直接转为字符串类型,但前提是有些情况,在其他情况中,很可能会直接导致报错,这一点我们后面会去重点说,所以现在暂且不用关注,只需记住本点的第一句话即可。
-
字符串中的字符分为:普通字符和转义字符,前者就是我们常见的普通符号,没有特殊含义,但后者可能不会在字符串的输出中看到,例如 \s \n \t 这类表达空格、换行之类的转义字符,转义字符并不是表达字符串的自身,而是表达特殊意义,一般是可以对输出有影响的特殊字符。
创建字符串
创建字符串存在两种方法,(很多地方说是一种,其实这么说也可以,但是为了更加全面,我把我认为的两种全部放出来),分为直接创建和间接创建。
-
直接创建
这种是最为常见的创建方法,如下:
str1 = '' # 引号里面可以直接写想创建的字符串的字符。
-
间接创建
第二种方法,就是要稍微麻烦一点的转类型的创建,我们前面说过 str() 可以转类型,那么这里我们就可以利用他来转:
a = 454545 str2 = str(a) #这里我们就把a转为字符串的数据成功赋值给了 str2 , 这种方法,有数据类型的要求,有些特殊格式不可以直接转为字符串,这里暂且不说,后面遇到了再着重说明。
以上两种方法,还是直接创建字符串更为实用些,如果单纯创建字符串还是建议直接创建的方法。
字符串的拼接、重复
字符串的拼接重复和列表一样,容我直接翻列表那段的代码。(打字,打字是不可能打字的啦,哈哈哈)
-
拼接
字符串的拼接就是字符串的直接相加,对于字符串来说,字符串的直接相加可以使得新字符串长度为老字符串之和,字符也是老字符串之和,由于字符串中的元素可以重复,所以也使得相加后,可能会出现重复元素,对于字符串的去重操作我们后面再说,现在只提供字符串的拼接方法以及思路。
str1 = '王者荣耀' str2 = '和平精英' str3 = str1 + str2 # 这里的str3即为实现了字符串拼接后的结果,str3 为 '王者荣耀和平精英'
-
重复
我们对字符串直接做乘法可以实现字符串的重复,即为对于字符串的元素的重复。
str4 = '1234' str5 = str4 * 2 # 此时,str5就为 '12341234' ,即只是简单的对于元素重复而已。
字符串的大小比较
和列表一样,这里我们同样提供4个知识点,大家熟记就可以了。
-
字符串比较大小的是同一位置上的元素。
-
字符串从左向右开始比较大小,知道有一个不相同的元素,就判断被比较两个同位置字符的大小,从而判断字符串的大小。
-
字符串中字符的大小比较,遵循编码来比较。(Python2使用的是ASCII编码,Python3使用的是Unicode编码表,后者又称万国码)
提供几个常用的 ASCII 码范围
0 - 9 的范围:48~57;
A - Z 的范围:65-90;
a - z 的范围: 97~122补充函数:
# chr():能够将十进制数值转换成对应的编码表中的符号。 # ord():能够将编码表中的符号转换成对应的十进制数值。 # 在实际项目中,我们可以利用这两个函数来查询字符的编码,从而达到我们想要的效果。
字符串的遍历
-
直接遍历
直接遍历的方法类似列表,就是单纯的对于字符串中的字符进行遍历,是 Python 独有的方法。
str1 = 'abcdefg' for i in str1: print(i)
-
间接遍历
间接遍历是通过 for循环 遍历字符串中每个字符的下标的方式来跑遍每个字符,虽然相对麻烦,但是同样可以拿到字符串中每个字符。
for i in range(len(str1)): print(i, str1[i])
字符串的下标和切片
再次容我去爬个列表的源码,因为他们的下标和切片一毛一样!!!
下标
字符串的下标就是其 [] 内的数字,用来表示字符串内字符的位置关系。
字符串内的字符下标从 0 开始到 len(字符串) - 1 结束,这里需要记住字符串等容器大部分的下标都是从0开始的,这点可能与其它语言不同。
下标可为正可为负,正数时,下标是从右边(从0开始递增1)开始计算,例如 str1[5] ,就是从右边开始第六位字符;负数时,下标从左边(从-1开始递减1)开始计算,例如 str1[-5] ,就是从左边开始第5位字符。
这里需要注意:正数下标和负数转换的时候,并不是直接转换,而是要注意,正负的开始字符不一样,正时 0 开始,负时 -1 开始。
切片
"""
切片语法:
容器[start:stop:step]
start:开始参数,默认0,可以省略不写;stop:结束参数(必须赋值的一个参数);
step:为步长,决定下一个数字获取谁,默认为1,可以省略不写;
切片也是一个左闭右开区间,下一个被获取字符的下标=当前被获取字符的下标+step
"""
字符串的成员运算
# 成员运算:not in,in
str2 = '王者荣耀和平精英奇迹暖暖'
# 1.'王者荣耀'在不在str2中
print('王者荣耀' in str2)
# 2.'和'在不在str2中
print('和' in str2)
需要注意,对于字符串的成员运算来说,in 或者not in 前面的元素如果是后面长字符串的字串,也是可以报 True 的。
这里给出字串的定义以及实例:字符串的子串(有一段长度>=1,<=原字符串长度的字符串,属于原字符串的)。
实例:
str1 = '王者荣耀和平精英'
print('王' in str1)
print('王者' in str1)
print('王荣' not in str1)
在最终的运算结果中,三个均为 True 。
字符串相关操作方法
-
字符串的大小写
upper():这个方法实现将字符串内所有小写字母转为大写字母。
lower():这个方法实现将字符串内所有大写字母转为小写字母。
str1 = '12345abcdeABCDE' print(str1.upper()) print(str1.lower())
-
max()、min()方法
这两个方法就是拿来算字符串中的最大值和最小值,但是实际运算中是根据编码值来进行运算的,编码值最大的就是最大值,编码最小的就是最小值。
str1 = 'avbcskdjaljdaljSDADADA' print(max(str1),min(str1))
-
count() 方法
这个方法是拿来对于字符串中的字符进行个数运算,括号里写出想求个数的字符,有这个字符时会返回它对应的数量值,没有这个字符时返回数字0,而并不会报错。
str2 = '12345abcde' print(str2.count('6565'))
-
len() 方法
这个方法可以返回括号内指定字符串的长度,但括号内并不止可以是字符串,也可以是列表,字典,集合等容器类数据。
-
index() 方法
返回括号里元素的值第一次在前面容器里出现的下标,查找方式为由左至右,如果在这个元素前面有和他值一样的元素,那么返回值就会优先返回前面那元素的下标。
index( , )内部存在两个常用的参数,逗号前为想查找元素的值,后面则为想开始查找该元素的位置(必须为一个下标)。
str1 = '123' print(str1.index(2)) # 这里的返回值是 1 ,也就是 元素2 的下标。
-
find() 方法
find() 方法的描述与前面 index() 是一致的,但是,find() 方法不会产生报错,只是在查不到元素时会产生一个 -1 的值。
str1 = '123' print(str1.find(4)) # 这里的返回值是 -1 ,因为源字符串中并没有 元素4 。
-
split() 方法
这个方法要重点去说,因为在实际的写代码中很实用。
从定义上来说,split() 方法只是单纯的对字符换进行切割,按照括号内的切割符号切割后将切割后的字符串分成不同小部分放入一个新的列表,储存新字符串的变量也就是一个 list 类型,是一个列表。
需要注意的是,split() 方法括号里是否加上东西的区别很大,当他里面为空值的时候,默认删除所有转义字符,也包括空格、换行符之类的所有特殊符号再按照空格进行切割,但是当他括号里有符号的时候,就必须按照括号里的符号严格进行切割。
str4 = '1 2 3 4 5 6 7 8' strList = str4.split(' ') strList0 = str4.split() print(strList) print(strList0) # 上下两种切割方式得到的结果完全一致,都是列表 [1,2,3,4,5,6,7,8]。
-
join() 方法
这个方法是将字符串容器(字符串列表、字符串、字符串元组等)中的所有元素按照指定的符号拼接。
str5 = '+'.join(strList) print(str5) # 点号前面是选择拼接的符号,后面括号里的则是选择的容器类数据。
-
replace() 方法
这个方法的目的是替换,能够将字符串中指定的旧字符串换成新的字符串,也可以是指定的旧字符转换为新字符。
replace() 的括号里常用的有三个参数,第一个为需要替换的旧字符串,第二个为即将替换他的新字符串,第三个则为替换的次数,如果原字符串有三个空格,但只想替换2次,那么最后一个参数写2即可。
str4 = '1 2 3 4 5 6 7 8' print(str4.replace(' ', '+')) print(str4.replace(' ', '+', 2))
-
strip() 方法
终于要写完了,泪目!!
去除指定字符串的头尾的空白字符,例如空格、\n、\t 以及其他转义字符等。
给一个例子大家看看就好:
print('***************') str6 = '\t abc 123 \n' print(str6) print('***************') print(str6.strip()) print('***************') print(str6.strip('\n'))
PS:这几天的内容真的多,加油加油加油!!!!