目录

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"等都是整体作为一个字符,即作为一个转义符:

    

python 跳过RuntimeError python 跳过下一个字符_字符串

 

2.1.2、反斜杠"\"不进行转义

上面已经讲过,在字符串中反斜杠"\"是优先进行和后面的字符进行匹配,不过如果反斜杠"\"和后面的字符进行匹配以后,不是特殊的转义字符(上面讲的从百度百科中查询出来的预定义的转义字符),那么反斜杠此时就没有转义的功能,也就是作为一个普通字符出现了

python 跳过RuntimeError python 跳过下一个字符_反斜杠_02

 

2.1.3、让反斜杠"\"失去转义功能

不过有时候需要让反斜杠"\"失去转义功能,就是代表反斜杠自己,可以通过两种方式:

2.1.3.1、"\\"转义"\"

既然"\"是代表转义,那么就可以使用"\\"也就是一个反斜杠来转义一个反斜杠。

python 跳过RuntimeError python 跳过下一个字符_反斜杠_03

 

2.1.3.2、字符串前面使用r

正是由于反斜杠"\"的特殊意义,为了减少混淆,在Python中可以在字符串中加上字母r,表示整个字符串中所有的字符都是它本身,不再有特殊含义(主要是针对于反斜杠"\")。

python 跳过RuntimeError python 跳过下一个字符_开发语言_04

 

2.2、正则表达式的转义

在正则表达式中,也是使用反斜杠"\"进行转义的,比如"\d"代表匹配一个数字,"\w"表示匹配一个词,同时在正则中,一些元字符比如“.^$?”等都是有特殊含义的,如果直接使用这些元字符的话,不是代表这些字符的字面量意义。不过如果就要使用这些元字符本来的意义,比如在IP查询中就要使用点,那么就要使用"\"进行转义了,比如\.表示匹配字符点。由于正则的匹配模式也是字符串形式,因此反斜杠在字符串中是转义符,所以要想使用正则中的\d,就要写成\\d(其实直接写成\d也没问题,因为在字符串中\d不是转义符,所以根据上面的讲解,反斜杠就是反斜杠自己,不过不建议这样,建议使用两个反斜杠,即\\d,或者直接在字符串前面加上r)

python 跳过RuntimeError python 跳过下一个字符_开发语言_05

 不过最好的写法是,在字符串前面加上r,让字符串中的所有字符都代表自己,不会出现转义符。

python 跳过RuntimeError python 跳过下一个字符_python_06

 

由于出现了r,那么就表示字符串中所有的字符都是没有特殊的含义,因此r"\d+"中的\d就是Python正则中需要的,可以匹配一个数字的\d