• 37~python 字符串


    目录

    1.使用下标访问字符串的值-str[index]

    2.切片-[start:stop:step]

    3. 删除字符串边界指定字符-strip、lstrip、rstrip

    4. 替换-replace

    5. 查找 -find

    6. 字符串转换大小写

    7.分割字符串 -split

    8.转义字符


    1.使用下标访问字符串的值-str[index]
     

    1. s_name = "mY nAmE iS orange banana"
    2. # 1.使用 [index]访问,字符串的index从0开始
    3. print(s_name[0])  # 获取下标为0的字符--> m
    4. # 某字符的下标为多少,find函数返回下标

     

    2.切片-[start:stop:step]

    # 示例:[start:stop:step]   左闭右开
    # start :需要获取的字符串的开始位置(包括该位置的值),默认为 0 ,省略不写时表示从0开始。
    # stop :需要获取的字符串的结束位置(不包括该位置的值),省略不写时表示到末尾结束(包含结尾)。
    # step :步长,默认为 1,当 start 大于 stop 时,step 为负数。 正整数表示从左向右截取,负整数表示从右向左截取。
    1. s_name = "mY nAmE iS orange banana"
    2. # 从左往右 [start:stop:step]
    3. print(s_name[1:4]) # -->Y n
    4. print(s_name[:]) # 获取整个字符串 mY nAmE iS orange banana
    5. print(s_name[:-1]) # 不包含最后一位:mY nAmE iS orange banan
    6. print(s_name[::]) # 获取整个字符串 mY nAmE iS orange banana
    7. print(s_name[::1]) # mY nAmE iS orange banana
    8. print(s_name[::2]) # m AEi rnebnn
    9. # 从右往左 [start:stop:step]
    10. print(s_name[::-1]) # ananab egnaro Si EmAn Ym
    11. 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'等。
    
    """
    1. s3_name = " *abathis is example*b*a*c " # 前后各有2个空格
    2. print(len(s3_name)) # 29
    3. print(s3_name.lstrip()) # "*abathis is example*b*a*c " 默认删除左边的2个空格
    4. print(len(s3_name.lstrip())) # 27
    5. print(s3_name.lstrip(" *ab")) # "this is example*b*a*c "
    6. print(len(s3_name.lstrip(" *ab"))) # 23
    7. print(s3_name.rstrip()) # " *abathis is example*b*a*c" 默认删除右边的空格
    8. print(len(s3_name.rstrip())) # 27
    9. print(s3_name.rstrip(" *abc")) # " *abathis is example"
    10. print(len(s3_name.rstrip(" *abc"))) # 21
    11. print(s3_name.rstrip(" *ce")) # " *abathis is example*b*a"
    12. 只删除了右侧的2个空格,*,C,因指定的字符" *ce" e并不是右侧尾部的字符
    13. print(len(s3_name.rstrip(" *ce"))) # 25
    14. print(s3_name.strip()) # "*abathis is example*b*a*c" 删除字符串两边的空格
    15. print(len(s3_name.strip())) # 25
    16. print(s3_name.strip(" *ac")) # "bathis is example*b"
    17. print(len(s3_name.strip(" *ac"))) # 19
     
    

    4. 替换-replace

    """
    replace方法可用于替换字符串中的子字符串。不支持正则表达式替换。其使用格式如下:
    replace(old, new[, count=-1])
    1、old:要替换的老字符串。
    2、new:用于替换的新字符串。
    3、count:替换次数,int型,可选,默认为替换所有可能的替换。
    4、返回值为替换后的str类型的字符串。
    """

    1. s2_name = "this is example,and is this is really is"
    2. print(s2_name.replace("is", "am"))
    3. # tham am example,and am tham am really am
    4. 不会修改原字符串
    5. print(s2_name) # this is example,and is this is really is
    6. print(s2_name.replace("is", "am", 3)) # tham am example,and am this is really is
    7. print(s2_name.replace(" ","")) #去掉字符中间的空格
    8. #thisisexample,andisthisisreallyis

    5. 查找 -find

    """
    find方法可以查找子字符串在父字符串中的位置索引,索引是整数,从0开始。其使用格式如下:
    find(sub[, start[, end]])
    1、sub:要查找的子字符串。
    2、start:起始查找位置,int型,可选,默认为0。
    3、end:结束查找位置,int型,可选,默认为查找整个字符串。
    4、返回值为int型。表示sub在字符串中首次出现的位置。如果未找到,返回-1
    """

    1. s_name = "mY nAmE iS orange banana"
    2. print(s_name.find("is")) # -->-1 表示is不在 s_name字符串中,说明区分大小写
    3. print(s_name.find("iS")) # --->8 返回的是i在字符串s_name中对应的index
    4. print(s_name.find("iS", 0)) # --->8
    5. print(s_name.find("iS", 4, 15)) # --->8

    6. 字符串转换大小写

    """
    1.upper方法将字符串中的字符全部转换成大写字母
    2.lower方法将字符串中的字符全部转换成小写字母
    3.title方法可以将字符串中的单词首字符转换成大写字母
    4.swapcase方法可以进行大小写互换,即将字符串中的所有小写字母转换成大写,大写字母全部转换成小写
    5.capitalize方法将字符串的首字母大写,其他所有单词(包括首字母)都转换成小写
    """

    1. s1 = "you arE a girl"
    2. print(s1.upper()) # YOU ARE A GIRL
    3. print(s1.lower()) # you are a girl
    4. print(s1.title()) # You Are A Girl
    5. print(s1.swapcase()) # YOU ARe A GIRL
    6. print(s1.capitalize()) # You are a girl

    # 判断是否是大小写
    """
    istitle()
    islower()
    isupper()
    """

    1. s1 = "you arE a girl"
    2. # istitle(): 字符串每个单词的首字母是否是大写 return True if the string is a title-cased string, False otherwise.
    3. print(s1.istitle()) # False
    4. print(s1.title().istitle()) # True
    5. # islower(): Return True if the string is a lowercase string, False otherwise
    6. print(s1.islower()) # False
    7. print(s1.lower().islower()) # True
    8. # isupper(): Return True if the string is an uppercase string, False otherwise
    9. print(s1.isupper()) # False
    10. print(s1.upper().isupper()) # True

    1. s1 = "you arE a girl"
    2. # 判断是否是字母
    3. # isalpha():必须所有的字符都是字母
    4. # Return True if the string is an alphabetic string, False otherwise
    5. # A string is alphabetic if all characters in the string are alphabetic and there
    6. # is at least one character in the string
    7. print(s1.isalpha()) # False 因为含有空格

    7.分割字符串 -split

    """
    split方法可以使用指定字符将字符串分割,返回List
    其使用格式如下:
    split(sep=None, maxsplit=-1)
    其中参数 maxsplit 表示分割数量,省略表示全部分割。类似于上文 replace 方法的 count 参数。
    最重要的参数是 sep,其表示用作分割字符串的分割符,省略时使用空白符分割(可以是空格、换行、制表符中的任一种,连续的空白符视为一个,比如\n\r)
    如果字符串中不包含指定分隔符(或者没有提供分隔符),则返回一个由原字符串组成的只包含一个成员的列表
    """
    

    1. s_name = "mY nAmE iS orange banana"
    2. # maxsplit省略表示全部分割,sep省略时使用空白符分割
    3. print(s_name.split()) # ['mY', 'nAmE', 'iS', 'orange', 'banana']
    4. print(s_name.split(" ", 2)) # ['mY', 'nAmE', 'iS orange banana']
    5. print(s_name.split(" ")) # ['mY', 'nAmE', 'iS', 'orange', 'banana']
    6. # 不能使用空字符串('')做为分隔符
    7. # print(s_name.split("")) #E ValueError: empty separator
    8. # 如果字符串中不包含指定分隔符(或者没有提供分隔符),则返回一个由原字符串组成的只包含一个成员的列表
    9. s1 = "good"
    10. 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、反斜杠"\"不进行转义

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

    7bcc362f7be7c0ea870814211721f2fd.png

     

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

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

    2.1.3.1、"\\"转义"\"

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

     

    2.1.3.2、字符串前面使用r

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

    d957cdd30dd351d12c49cc4a7e86d58d.png

     

    2.2、正则表达式的转义

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

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

     

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

  • 相关阅读:
    聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化
    计算机毕业设计SSMJava商场会员管系统【附源码数据库】
    vue模板语法下集
    宇视大屏出现不规则闪烁故障排查方法
    git企业级使用
    算法金 | 奇奇怪怪的正则化
    搞搞算法 1
    RGB(c++)
    Scala012--Scala中的常用集合函数及操作Ⅲ
    Mysql优化---type、key、Extra等字段含义
  • 原文地址:https://blog.csdn.net/lzmlc0109/article/details/127587159