美文网首页
006-字符串

006-字符串

作者: 小D修行笔记 | 来源:发表于2022-07-26 05:34 被阅读0次

    \color{red}{字符串的写法、字符串的输入与输出、下标、切片}
    \color{red}{字符串查找(find、index、count、rfind、rindex)}
    \color{red}{字符串修改(替换、分割、拼接、大小写转换、去除空格、对齐)}
    \color{red}{字符串判断(指定开头、指定结尾、全部字符、全部数字、字符和数字组合、只包含空格)}

    字符串

    • 字符串是Python中最常用的数据类型。一般使用引号来创建字符串
    • 使用单引号创建字符串'hello'
    • 使用双引号创建字符串"hello"
    • 使用六个单引号或六个双引号创建字符串'''hello'''"""hello"""
    • 使用六个引号创建的字符串,可以换行
    • 字符串的数据类型<class 'str'>

    字符串的数据类型

    a = 'hello world'
    print(a)
    print(type(a))
    

    数据结果

    hello world
    <class 'str'>
    

    六个引号包含的换行字符串

    a = '''hello
    world'''
    print(a)
    print(type(a))
    

    输出结果

    hello
    world
    <class 'str'>
    

    单引双引号字符串换行

    a = 'hello' \
        'world'
    print(a)
    print(type(a))
    

    输出结果

    helloworld
    <class 'str'>
    
    • 单引号、双引号字符串换行需要使用'\',并且只是代码换行,输出效果跟不换行是一样的
    • 三引号写法,换行不需要添加额外的字符,并且输出也是换行的

    字符串中带有引号的情况

    字符串中带有单引号可以使用双引号或三引号包含,也可以使用转译字符\
    a = "I'm Tom"
    b = '''I'm Tom'''
    c = """I'm Tom"""
    d = 'I\'m Tom'
    print(a)
    print(b)
    print(c)
    print(d)
    

    输出结果

    I'm Tom
    I'm Tom
    I'm Tom
    I'm Tom
    
    字符串中带有双引号,可以使用单引号或三引号包含,也可以使用转译字符\
    a = '"今天天气真好"'
    b = '''"今天天气真好"'''
    c = """"今天天气真"好"""
    d = "\"今天天气真好\""
    print(a)
    print(b)
    print(c)
    print(d)
    

    输出结果

    "今天天气真好"
    "今天天气真好"
    "今天天气真"好
    "今天天气真好"
    
    • 当使用三引号包含的时候,结尾不可以四个相同引号都相连"""今"天天气真好"""",如果结尾四个相同的引号,需要使用转译字符"""今"天天气真好\""""
    字符串中单引双引都有的情况,可以使用三引号包含,也可以使用转译字符\
    a = '''"I'm Tom"'''
    b = """"I'm Tom\""""
    c = '"I\'m Tom"'
    d = "\"I'm Tom\""
    print(a)
    print(b)
    print(c)
    print(d)
    

    输出结果

    "I'm Tom"
    "I'm Tom"
    "I'm Tom"
    "I'm Tom"
    

    字符串的输出

    • 使用print直接输出字符串的数据
    • 使用%s格式化输出字符串
    • 使用f输出字符串
    print('hello')
    str1 = 'hello'
    print('%s' % str1)
    print(f'{str1}')
    

    输出结果

    hello
    hello
    hello
    

    字符串的输入

    • 在Python中使用input()接收用户输入

    input('提示信息:')

    • input返回一个字符串类型的数据
    • 用户输入的数据默认是字符串类型
    password = input("请输入密码:")
    print(f'您输入的密码是{password}')
    print(f'密码的数据类型是{type(password)}')
    

    输出结果

    请输入密码:123
    您输入的密码是123
    密码的数据类型是<class 'str'>
    
    • input是阻塞式函数,等待用户输入后才继续执行

    字符串的下标

    • 下标又叫索引,就是编号。
    • 下标的作用即是通过下标快速找到对应的数据
    • 下标的索引时从0开始的

    下标的使用

    str1 = 'abcdefg'
    print(str1)
    print(str1[0])
    

    输出结果

    abcdefg
    a
    
    • 使用下标,可以精确的找到某个数据

    切片

    • 切片即是截取字符串中的子串
    • 字符串、列表、元组都支持切片操作

    序列[开始位置下标:结束位置下标:步长]

    • 不包含结束位置下标对应的数据(左闭右开),正负整数均可
    • 步长是选取间隔,正负数均可,默认步长为1
    str1 = 'abcdefg'
    # 整个字符串
    print(str1)
    # 只获取c,使用下标的方法,得到的是下标为某个数字的数据
    print(str1[2])
    # 得到abc,使用切片的方法截取
    print(str1[0: 3])
    

    输出结果

    abcdefg
    c
    abc
    

    开始、结束、步长为正数

    str1 = '012345678'
    # 截取234
    print(str1[2: 5: 1])  # 截取起始下标为2,终止下标为5的区间范围,左闭右开
    print(str1[2: 5])  # 默认步长是1,如果截取的步长为1,则可以省略
    # 截取的步长为2
    print(str1[2: 5: 2])  # 步长为2,结果为24
    # 截取从开始下标,到下标为5的区间范围,01234
    print(str1[0: 5])  # 起始下标为0,结束下标为5
    print(str1[: 5])  # 如果起始位置是从0开始,可以省略不写
    # 截取从下标2开始,到结束位置
    print(str1[2: len(str1)])  # 截取从下标2开始到末尾
    print(str1[2:])  # 如果截取到最后,结束下标可以省略不写
    # 截取全部
    print(str1[0: len(str1)])  # 从开始到最后
    print(str1[:])  # 开始和结束都省略,默认是从开始到结束
    

    输出结果

    234
    234
    24
    01234
    01234
    2345678
    2345678
    012345678
    012345678
    

    开始、结束为正数,步长为负数

    str1 = '012345678'
    print(str1[::-1]) # 步长为负数,表示倒序选取,从右往左选取
    

    输出结果

    876543210
    

    开始、结束为负数,步长为正数

    str1 = '012345678'
    print(str1[-4:-1])  # 567,下标-1表示最后一个数据,依次向前类推
    

    输出结果

    567
    

    开始、结束下标为负数,步长为负数

    str1 = '012345678'
    print(str1[-4:-1:-1])  # 什么都没有选取,-4到-1的选取范围是567,步长-1,是从右向左选取,故而什么都选取不到
    

    输出结果

    总结

    • 步长为正数,表示从左到右选取数据
    • 步长为负数,表示从右向左选取数据
    • 如果开始下标 < 结束下标,步长为正数,可以选取到数据,步长为负数,选取不到数据
    • 如果开始下标 > 结束下标,步长为负数,可以选取到数据,步长为正数,选取不到数据
    • 选取方向和下方方向一致才能选取到数据

    字符串查找

    • 字符串的常用操作方法有查找、修改和判断

    查找

    find()、rfind()
    • 所谓字符串查找方法即是查找子串在字符串中的位置或出现的次数

    字符串序列.find(子串,开始位置下标,结束位置下标)

    • find():检测字符串中是否包含某个子串,如果包含,返回这个子串开始位置的下标,否则返回-1
    • 开始和结束位置可以省略,表示在整个字符串中查找
    能找到,返回第一次出现的下标
    str1 = 'ccabcsabc'
    result = str1.find('abc')
    print(result)  # 2
    
    

    输出结果

    2
    
    找不到,返回-1
    str1 = 'ccabcsabc'
    result = str1.find('abs')
    print(result)
    
    

    输出结果

    -1
    

    字符串序列.rfind(子串,开始位置下标,结束位置下标)

    • rfind():同find(),查找方向从右向左查找
    rfind():从右向左查找
    str1 = 'ccabcsabc'
    result = str1.rfind('abc')
    print(result)
    

    输出结果

    6
    
    index()、rindex()

    字符串序列.index(子串,开始位置下标,结束位置下标)

    • index():检测某个子串是否包含在这个字符串中,如果在,返回这个子串开始位置的下标,否则报异常
    能找到,返回第一次出现的索引
    str1 = 'ccabcsabc'
    result = str1.index('abc')
    print(result)
    

    输出结果

    2
    
    找不到,报异常处理
    str1 = 'ccabcsabc'
    result = str1.index('abs')
    print(result)
    

    输出结果

    Traceback (most recent call last):
      File "/Users/apple/Desktop/code1/hello.py", line 2, in <module>
        result = str1.index('abs')
    ValueError: substring not found
    

    字符串系列.rindex(子串,开始位置下标,结束位置下标)

    • rindex():同index(),查找方向从右向左查找
    从右向左查找
    str1 = 'ccabcsabc'
    result = str1.rindex('abc')
    print(result)
    

    输出结果

    6
    
    count()
    • 返回某个子串在字符串中出现的次数

    字符串序列.count(子串,开始位置下标,结束位置下标)

    • 开始和结束位置下标可以省略,表示在整个字符串中查找
    统计子串出现的次数
    str1 = 'ccabcsabc'
    result = str1.count('abc')
    print(result)
    

    输出结果

    2
    
    不存在,返回0
    str1 = 'ccabcsabc'
    result = str1.count('abs')
    print(result)
    

    输出结果

    0
    

    字符串修改

    • 所谓修改字符串,指的就是通过函数的形式修改字符串中的数据
    • 返回的都是一个新的字符串,原有字符串不变
    • 字符串是不可变数据类型

    替换replace()

    字符串序列.replace(旧子串,新子串,替换次数)

    • 从左到右依次使用新的子串替换旧的子串,替换指定的次数
    • 替换次数如果> 子串出现的次数,则替换次数为该子串出现次数
    • 替换次数可以不写,则默认替换所有
    替换次数小于子串出现的次数
    str1 = 'ssabcddabcrrabceeabc'
    print(str1)
    str2 = str1.replace('abc', '123', 2)
    print(str2)
    

    输出结果

    ssabcddabcrrabceeabc
    ss123dd123rrabceeabc
    
    替换次数大于子串出现的次数
    str1 = 'ssabcddabcrrabceeabc'
    print(str1)
    str2 = str1.replace('abc', '123', 5)
    print(str2)
    

    输出结果

    ssabcddabcrrabceeabc
    ss123dd123rr123ee123
    

    分割

    字符串序列.split(分割字符,num)

    • split():按照指定字符分割字符串
    • num是分割次数,分割后得到num+1个子串
    • 如果num小于等于分割字符出现的次数,则分割次数为num
    • 如果num大于分割字符出现的次数,则分割次数为分割字符出现的次数
    • 分割后的子串不再包含分割字符
    分割次数小于分割字符出现的次数
    str1 = 'ssabcddabcrrabceeabc'
    print(str1)
    print(str1.split('abc',2))
    

    输出结果

    ssabcddabcrrabceeabc
    ['ss', 'dd', 'rrabceeabc']
    
    分割次数大于分割字符出现的次数
    str1 = 'ssabcddabcrrabceeabc'
    print(str1)
    print(str1.split('abc',8))
    

    输出结果

    ssabcddabcrrabceeabc
    ['ss', 'dd', 'rr', 'ee', '']
    

    拼接

    字符或子串.join(多字符串组成的序列)

    • 使用字符或子串,拼接序列,形成一个新的字符串
    list1 = ['aa', 'bb', 'cc', 'dd']
    print(list1)
    str1 = '***'.join(list1)
    print(str1)
    

    输出结果

    ['aa', 'bb', 'cc', 'dd']
    aa***bb***cc***dd
    

    首字母大写,其余字母小写

    字符串.capitalize()

    • 将字符串第一个字符转换成大写
    • 只有第一个字符大写,其余全部转换成小写
    str1 = "hello World.How are You"
    print(str1)
    print(str1.capitalize())
    

    输出结果

    hello World.How are You
    Hello world.how are you
    

    每个单词首字母大写

    字符串.title()

    • 将字符串每个单词首字母转换成大写
    str1 = "hello World.How are You"
    print(str1)
    print(str1.title())
    

    输出结果

    hello World.How are You
    Hello World.How Are You
    

    大写转小写

    字符串.lower()

    -将字符串的所有字母都转换成小写字母

    str1 = "hello World.How are You"
    print(str1)
    print(str1.lower())
    

    输出结果

    hello World.How are You
    hello world.how are you
    

    小写转大写

    字符串.upper()

    • 将字符串中所有字母都转换成大写字母
    str1 = "hello World.How are You"
    print(str1)
    print(str1.upper())
    

    输出结果

    hello World.How are You
    HELLO WORLD.HOW ARE YOU
    

    去除左端空格

    字符串.lstrip()

    • 去除字符串左侧空白字符
    str1 = "  hello World.How are You  "
    print(str1)
    print(str1.lstrip())
    

    输出结果

      hello World.How are You  
    hello World.How are You 
    

    去除右端空格

    字符串.rstrip()

    • 去除字符串右侧空白字符
    str1 = "  hello World.How are You  "
    print(str1)
    print(str1.rstrip())
    

    输出结果

      hello World.How are You  
      hello World.How are You
    
    • 输出结果第一行右侧有空白字符,第二行没有

    去除两端空格

    字符串.strip()

    • 去除字符串两端的空白字符
    str1 = "  hello World.How are You  "
    print(str1)
    print(str1.strip())
    

    输出结果

      hello World.How are You  
    hello World.How are You
    

    返回一个指定长度左对齐的字符串

    字符串.ljust(长度,填充字符)

    • 填充字符可以不写,默认空字符
    • 将字符串扩充到指定长度,右侧补充设置的填充字符
    • 如果设置的字符串长度小于字符串的长度,则原样输出
    str1 = "abc"
    print(str1)
    print(str1.ljust(7, '*'))
    

    输出结果

    abc
    abc****
    

    返回一个指定长队右对齐的字符串

    字符串.rjust(长度, 填充字符)

    • 填充字符可以不写,默认空白
    • 将字符串扩充到指定长度,左侧补充设置的填充字符
    • 如果设置的长度小于原字符串的长度,则原样输出
    str1 = "abc"
    print(str1)
    print(str1.rjust(7))
    

    输出结果

    abc
        abc
    

    返回一个指定长度居中对齐的字符串

    字符串.center(长度,填充字符)

    • 填充字符可以不写,默认空白字符
    • 将字符串扩充到指定长度,两端补充设置的填充字符
    • 如果设置的长度小于原字符串的长度,则原样输出
    str1 = "abc"
    print(str1)
    print(str1.center(7,"*"))
    

    输出结果

    abc
    **abc**
    

    字符串判断

    • 所谓判断即是判断真假,返回的结果是布尔型数据类型:True或False

    判断是否以指定子串开头

    字符串序列.startswith(子串,开始下标,结束下标)

    • startswith():检查字符串是否以指定子串开头,是返回True,否则返回False
    • 如果不设置开始和结束下标,默认是整个字符串
    • 设置开始和结束下标,则是开始和结束下标内的指定区间
    str1 = "hello world"
    print(str1)
    print(str1.startswith('hello'))
    print(str1.startswith('holl'))
    

    输出结果

    hello world
    True
    False
    

    判断是否以指定子串结尾

    字符串.endswith(子串,开始下标,结束下标)

    • endswith():检查字符串是否以指定子串结尾,是则返回True,否则返回False
    • 如果不设置开始和结束下标,默认是整个子串
    • 设置开始和结束下标,则是开始和结束下标区间内的指定区域
    str1 = "hello world"
    print(str1)
    print(str1.endswith('world'))
    print(str1.startswith('woold'))
    

    输出结果

    hello world
    True
    False
    

    判断是否全部由字母组成

    字符串.isalpha()

    • 如果字符串全部是由字母组成,返回True,否则返回False
    str1 = "hello world"
    str2 = 'hello'
    print(str1.isalpha())
    print(str2.isalpha())
    

    输出结果

    False
    True
    

    判断是否全部由数字组成

    字符串.isdigit()

    • 如果字符串全部是由数组组成,返回True,否则返回False
    str1 = '123'
    str2 = '123abc'
    str3 = 'a bc'
    print(str1.isdigit())
    print(str2.isdigit())
    print(str3.isdigit())
    

    输出结果

    True
    False
    False
    

    判断是否全部由数组或字母组成

    字符串.isalnum()

    • 如果字符串中只包含数字和字母,返回True,否则返回False
    str1 = 'abc'
    str2 = '123'
    str3 = '123abc'
    str4 = '123 abc'
    str5 = '123$abc'
    print(str1.isalnum())
    print(str2.isalnum())
    print(str3.isalnum())
    print(str4.isalnum())
    print(str5.isalnum())
    

    输出结果

    True
    True
    True
    False
    False
    

    判断是否只包含空白字符

    字符串.isspace()

    • 如果字符串中只包含空白字符,返回True,否则返回False
    • 空字符串,返回False,字符串要有长度
    str1 = ''
    str2 = '   '
    str3 = ' abc '
    print(str1.isspace())
    print(str2.isspace())
    print(str3.isspace())
    

    输出结果

    False
    True
    False
    

    相关文章

      网友评论

          本文标题:006-字符串

          本文链接:https://www.haomeiwen.com/subject/xgxgirtx.html