目录
1.使用下标访问字符串的值-str[index]
2.切片-[start:stop:step]
3. 删除字符串边界指定字符-strip、lstrip、rstrip
4. 替换-replace
5. 查找 -find
6. 字符串转换大小写
7.分割字符串 -split
8.转义字符
1.使用下标访问字符串的值-str[index]
s_name = "mY nAmE iS orange banana"
# 1.使用 [index]访问,字符串的index从0开始
print(s_name[0]) # 获取下标为0的字符--> m
# 某字符的下标为多少,find函数返回下标
2.切片-[start:stop:step]
# 示例:[start:stop:step] 左闭右开 # start :需要获取的字符串的开始位置(包括该位置的值),默认为 0 ,省略不写时表示从0开始。 # stop :需要获取的字符串的结束位置(不包括该位置的值),省略不写时表示到末尾结束(包含结尾)。 # step :步长,默认为 1,当 start 大于 stop 时,step 为负数。 正整数表示从左向右截取,负整数表示从右向左截取。
s_name = "mY nAmE iS orange banana"
# 从左往右 [start:stop:step]
print(s_name[1:4]) # -->Y n
print(s_name[:]) # 获取整个字符串 mY nAmE iS orange banana
print(s_name[:-1]) # 不包含最后一位:mY nAmE iS orange banan
print(s_name[::]) # 获取整个字符串 mY nAmE iS orange banana
print(s_name[::1]) # mY nAmE iS orange banana
print(s_name[::2]) # m AEi rnebnn
# 从右往左 [start:stop:step]
print(s_name[::-1]) # ananab egnaro Si EmAn Ym
print(s_name[::-2]) # aaa gaoS mnY
3. 删除字符串边界指定字符-strip、lstrip、rstrip
""" strip、lstrip、rstrip 三个方法可用于删除字符串左边或右边的指定字符,这三个方法的用法和参数的含义都是一样的,区别在于: 1、lstrip 删除左边,l是left左边的缩写;返回的是副本,不会修改原字符串 2、rstrip 删除右边,r是right右边的缩写;返回的是副本,不会修改原字符串 3、strip 删除两边。 4、strip(chars) 移除字符串头尾指定的字符序列;不指定chars时,默认删除空白符 ;返回的是副本,不会修改原字符串。 chars 是要删除的子字符串,类型为str,要删除的子字符串为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),即换行符、回车符、制表符、空格。 返回值为str型。返回两端删除了指定字符序列的字符串, 注意字符串中间的字符不会删除。要想删除中间的字符,可以使用 replace 方法。 注意,删除的是字符序列中的任一的一个字符,而不是完整的字符串。比如参数为'bc',则会删除所有的'b'和'c',包括'bb'、'cb'、'cc'等。 """
s3_name = " *abathis is example*b*a*c " # 前后各有2个空格
print(len(s3_name)) # 29
print(s3_name.lstrip()) # "*abathis is example*b*a*c " 默认删除左边的2个空格
print(len(s3_name.lstrip())) # 27
print(s3_name.lstrip(" *ab")) # "this is example*b*a*c "
print(len(s3_name.lstrip(" *ab"))) # 23
print(s3_name.rstrip()) # " *abathis is example*b*a*c" 默认删除右边的空格
print(len(s3_name.rstrip())) # 27
print(s3_name.rstrip(" *abc")) # " *abathis is example"
print(len(s3_name.rstrip(" *abc"))) # 21
print(s3_name.rstrip(" *ce")) # " *abathis is example*b*a"
只删除了右侧的2个空格,*,C,因指定的字符" *ce" e并不是右侧尾部的字符
print(len(s3_name.rstrip(" *ce"))) # 25
print(s3_name.strip()) # "*abathis is example*b*a*c" 删除字符串两边的空格
print(len(s3_name.strip())) # 25
print(s3_name.strip(" *ac")) # "bathis is example*b"
print(len(s3_name.strip(" *ac"))) # 19
4. 替换-replace
""" replace方法可用于替换字符串中的子字符串。不支持正则表达式替换。其使用格式如下: replace(old, new[, count=-1]) 1、old:要替换的老字符串。 2、new:用于替换的新字符串。 3、count:替换次数,int型,可选,默认为替换所有可能的替换。 4、返回值为替换后的str类型的字符串。 """
s2_name = "this is example,and is this is really is"
print(s2_name.replace("is", "am"))
# tham am example,and am tham am really am
不会修改原字符串
print(s2_name) # this is example,and is this is really is
print(s2_name.replace("is", "am", 3)) # tham am example,and am this is really is
print(s2_name.replace(" ","")) #去掉字符中间的空格
#thisisexample,andisthisisreallyis
5. 查找 -find
""" find方法可以查找子字符串在父字符串中的位置索引,索引是整数,从0开始。其使用格式如下: find(sub[, start[, end]]) 1、sub:要查找的子字符串。 2、start:起始查找位置,int型,可选,默认为0。 3、end:结束查找位置,int型,可选,默认为查找整个字符串。 4、返回值为int型。表示sub在字符串中首次出现的位置。如果未找到,返回-1 """
s_name = "mY nAmE iS orange banana"
print(s_name.find("is")) # -->-1 表示is不在 s_name字符串中,说明区分大小写
print(s_name.find("iS")) # --->8 返回的是i在字符串s_name中对应的index
print(s_name.find("iS", 0)) # --->8
print(s_name.find("iS", 4, 15)) # --->8
6. 字符串转换大小写
""" 1.upper方法将字符串中的字符全部转换成大写字母 2.lower方法将字符串中的字符全部转换成小写字母 3.title方法可以将字符串中的单词首字符转换成大写字母 4.swapcase方法可以进行大小写互换,即将字符串中的所有小写字母转换成大写,大写字母全部转换成小写 5.capitalize方法将字符串的首字母大写,其他所有单词(包括首字母)都转换成小写 """
s1 = "you arE a girl"
print(s1.upper()) # YOU ARE A GIRL
print(s1.lower()) # you are a girl
print(s1.title()) # You Are A Girl
print(s1.swapcase()) # YOU ARe A GIRL
print(s1.capitalize()) # You are a girl
# 判断是否是大小写 """ istitle() islower() isupper() """
s1 = "you arE a girl"
# istitle(): 字符串每个单词的首字母是否是大写 return True if the string is a title-cased string, False otherwise.
print(s1.istitle()) # False
print(s1.title().istitle()) # True
# islower(): Return True if the string is a lowercase string, False otherwise
print(s1.islower()) # False
print(s1.lower().islower()) # True
# isupper(): Return True if the string is an uppercase string, False otherwise
print(s1.isupper()) # False
print(s1.upper().isupper()) # True
s1 = "you arE a girl"
# 判断是否是字母
# isalpha():必须所有的字符都是字母
# Return True if the string is an alphabetic string, False otherwise
# A string is alphabetic if all characters in the string are alphabetic and there
# is at least one character in the string
print(s1.isalpha()) # False 因为含有空格
7.分割字符串 -split
""" split方法可以使用指定字符将字符串分割,返回List 其使用格式如下: split(sep=None, maxsplit=-1) 其中参数 maxsplit 表示分割数量,省略表示全部分割。类似于上文 replace 方法的 count 参数。 最重要的参数是 sep,其表示用作分割字符串的分割符,省略时使用空白符分割(可以是空格、换行、制表符中的任一种,连续的空白符视为一个,比如\n\r) 如果字符串中不包含指定分隔符(或者没有提供分隔符),则返回一个由原字符串组成的只包含一个成员的列表 """
s_name = "mY nAmE iS orange banana"
# maxsplit省略表示全部分割,sep省略时使用空白符分割
print(s_name.split()) # ['mY', 'nAmE', 'iS', 'orange', 'banana']
print(s_name.split(" ", 2)) # ['mY', 'nAmE', 'iS orange banana']
print(s_name.split(" ")) # ['mY', 'nAmE', 'iS', 'orange', 'banana']
# 不能使用空字符串('')做为分隔符
# print(s_name.split("")) #E ValueError: empty separator
# 如果字符串中不包含指定分隔符(或者没有提供分隔符),则返回一个由原字符串组成的只包含一个成员的列表
s1 = "good"
print(s1.split()) # ['good']
8.转义字符
1. 转义字符的定义:由反斜杠加上一个字符或数字组成,它把反斜杠后面的字符或数字转换成特定的意义。【转义字符,就是那些以反斜杠\
开头的字符】
ASCII 编码为每个字符都分配了唯一的编号,称为编码值。在 Python 中,一个 ASCII 字符除了可以用它的实体(也就是真正的字符)表示,还可以用它的编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。
2. 一般转义字符有:\n 代表换行符;\t 代表横向跳格;\\ 代表反斜杠;\" 代表双引号;\' 代表单引号;\r代表回车;\b代表退格
Python中的转义符
我目前知道的Python中的转义符使用场景有两个:一个是字符串,一个是正则表达式
2.1、字符串的转义
2.1.1、反斜杠"\"进行转义
在字符串中,反斜杠"\"有特殊的含义,它代表的就是转义。在字符串中,反斜杠"\"会优先尝试和后面的字符串结合起来,组合的字符加一起有特殊含义,就代表转义,比如"\n",在反斜杠"\"后面紧跟着的是字母"n",由于"\n"代表着换行,因此"\n"就作为一个整体,代表着换行符,同样的,"\t","\a"等都是整体作为一个字符,即作为一个转义符:
2.1.2、反斜杠"\"不进行转义
上面已经讲过,在字符串中反斜杠"\"是优先进行和后面的字符进行匹配,不过如果反斜杠"\"和后面的字符进行匹配以后,不是特殊的转义字符(上面讲的从百度百科中查询出来的预定义的转义字符),那么反斜杠此时就没有转义的功能,也就是作为一个普通字符出现了
2.1.3、让反斜杠"\"失去转义功能
不过有时候需要让反斜杠"\"失去转义功能,就是代表反斜杠自己,可以通过两种方式:
2.1.3.1、"\\"转义"\"
既然"\"是代表转义,那么就可以使用"\\"也就是一个反斜杠来转义一个反斜杠。
2.1.3.2、字符串前面使用r
正是由于反斜杠"\"的特殊意义,为了减少混淆,在Python中可以在字符串中加上字母r,表示整个字符串中所有的字符都是它本身,不再有特殊含义(主要是针对于反斜杠"\")。
2.2、正则表达式的转义
在正则表达式中,也是使用反斜杠"\"进行转义的,比如"\d"代表匹配一个数字,"\w"表示匹配一个词,同时在正则中,一些元字符比如“.^$?”等都是有特殊含义的,如果直接使用这些元字符的话,不是代表这些字符的字面量意义。不过如果就要使用这些元字符本来的意义,比如在IP查询中就要使用点,那么就要使用"\"进行转义了,比如\.表示匹配字符点。由于正则的匹配模式也是字符串形式,因此反斜杠在字符串中是转义符,所以要想使用正则中的\d,就要写成\\d(其实直接写成\d也没问题,因为在字符串中\d不是转义符,所以根据上面的讲解,反斜杠就是反斜杠自己,不过不建议这样,建议使用两个反斜杠,即\\d,或者直接在字符串前面加上r)
不过最好的写法是,在字符串前面加上r,让字符串中的所有字符都代表自己,不会出现转义符。
由于出现了r,那么就表示字符串中所有的字符都是没有特殊的含义,因此r"\d+"中的\d就是Python正则中需要的,可以匹配一个数字的\d