美文网首页
Python基础(四): 字符串

Python基础(四): 字符串

作者: 伯wen | 来源:发表于2018-01-04 12:48 被阅读31次

    字符串: 由单个字符组成的集合

    形式:

    • 非原始字符串: 会被转义符影响的字符串

      • 使用单引号包含的: 'abc'
      • 使用双引号包含的: "abc"
      • 使用三个单引号包含的: '''abc'''
      • 使用三个双引号包含的: """abc"""
      str = '这是一个"xxx"\n他会\'xxx\''
      print(str)
      
      # 打印:
      这是一个"xxx"
      他会'xxx'
      
    • 原始字符串: 不会被转义符影响的字符串

      • 使用单引号包含的: r'abc'
      • 使用双引号包含的: r"abc"
      • 使用三个单引号包含的: r'''abc'''
      • 使用三个双引号包含的: r"""abc"""
      str = r'这是一个"xxx"\n他会\'xxx\''
      print(str)
      
      # 打印:
      这是一个"xxx"\n他会\'xxx\'
      
    • 转义符

      • 概念: 通过转换某个指定的字符, 使它具备特殊的含义
      • \(写在结尾): 续行符
      str = "wo shi"\
          " xxx"
      print(str)
      
      # 打印:
      wo shi xxx
      
      • \': 单引号
      • \": 双引号
      • \n: 换行符
      str = "wo shi\nxxx"
      print(str)
      
      # 打印:
      wo shi 
      xxx
      
      • \t: 横向制表符
      str = "wo shi\txxx"
      print(str)
      
      # 打印:
      wo shi  xxx
      

    各种形式的特点

    • 单/双引号:
      • 混合使用可以避免使用引号转义符
      str1 = 'wo shi "xxx"' 
      str2 = "wo shi 'xxx'"
       print(str1)
       print(str2)
      
       # 打印: 
       wo shi "xxx"
      wo shi 'xxx'
      
      • 一般需要写成一行:
      str1 = "wo shi "\
          "xxx"
      str2 = ("wo shi "
          "xxx")
      
    • 三引号:
      str1 = '''wo 
      shi 
      xxx'''
      print(str1)
      
      # 打印:
      wo 
      shi 
      xxx
      
      str2 = '''\
      wo  \
      shi \
      xxx'''
      print(str1)
      
      # 打印:
      wo shi xxx
      
      • 可以用于注释
      '''
      这里是多行注释
      这里是多行注释
      这里是多行注释
      '''
      

    字符串的一般操作

    • 字符串拼接
      • 方式1: str1 + str2
      str1 = "xxx"
      str2 = "ooo"
      print(str1 + str2)
      # 打印: 
      xxxooo
      
      • 方式2: 直接将两个字符串放在一起, 注意: 不能使用字符串变量
      str = "xxx""ooo"
      print(str)
      # 打印: 
      xxxooo
      
      • 使用格式符
      str1 = "xxx"
      str2 = "ooo"
      print("%s%s" % (str1, str2))
      # 打印: 
      xxxooo
      
      • 字符串乘法
      str = "xxxooo " * 3
      print(str)
      # 打印: 
      xxxooo xxxooo xxxooo
      
    • 字符串切片
      • 概念: 获取一个字符串的某个片段

      • 获取某一个字符

        • name[下标]
        • 下标: 字符串中每一个字符都有一个对应的编号, 且编号从0开始
        str = "wo zai xue python"
        print(str[0], str[3], str[6])
        # 打印:
        w z x
        
        • 注意: 如果下标不能越界, 并且下标为负数的时候表示从尾部开始定位
        str = "wo zai xue python"
        print(str[-1], str[-13], str[-6])
        # 打印:
        n a p
        
      • 获取一个片段

        • name[起始:结束:步长]
        • 获取范围: [起始, 结束), 左闭右开区间
        • 默认值: 起始=0, 结束=len(str), 步长=1
        • 获取顺序, 步长>0: 从左到右, 步长<0: 从右到左

        注意: 从左到右, 起始必须小于结束, 从右到左, 起始必须大于结束
        ```
        str = "wo zai xue python"
        print(str[0:6:1])
        # 因为步长=1, 所以从左到右取, 此时起始对应的字母, 必须在结束对应字母的左边
        # 打印:
        wo zai

        print(str[13:3:-1])

        因为步长=-1, 所以从右往左取, 此时起点对应的字母, 必须在结束对应字母的右边

        打印:

        typ eux ia

        print(str[12:6:1])

        此时步长=1, 从左到右取, 但是起点对应字母 在 结束对应字母的右边, 所以无法获取到子串

        打印空

        print(str[3:13:-1])

        此时步长=-1, 从右到左取, 但是起点对应字母 在 结束对应字母的左边, 所以无法获取到子串

        打印空

      • 特殊案例: 反转字符串

      str = "wo zai xue python"
      print(str[::-1])
      # 打印: 
      nohtyp eux iaz ow
      

    字符串的函数操作

    查找计算、转换、填充压缩、分割拼接、判定

    • 查找计算
    len(str): 计算字符串的字符个数, `len`函数是内置函数, 可直接使用
        str: 需要计算的字符串
    
    find(sub, start=0, end=len(str)): 查找字符串索引位置, 找不到返回-1
        sub: 子串
        start: 起点索引
        end: 终点索引
    
    rfind: 功能与 `find` 相同, 区别: 从右到左查找
    
    index:(sub, start=0, end=len(str)): 获取子串索引位置, 找不到会报错
        sub: 子串
        start: 起点索引
        end: 终点索引
    
    rindex: 功能与 `index`, 相同, 区别:从右到左查找
    
    count(sub, start=0, end=len(str)): 计算某个子串出现的个数
        sub: 子串
        start: 起点索引
        end: 终点索引
    
    • 转换
    replace(old, new, count): 使用新串替换旧串, 返回新串, 有字符串不变
        old: 旧串
        new: 新串
        count: 需要替换的个数, 默认为替换全部
    
    capitalize(): 将字符串首字母变为大写, 返回新串, 原字符串不变
        无参数
    
    title(): 将字符串中每个单词的首字母变为大写, 返回新串, 原字符串不变
        无参数
    
    lower(): 将字符串中所有的字母变为小写, 返回新串, 原字符串不变
        无参数
    
    upper(): 将字符串中所有的字母变为大写, 返回新串, 原字符串不变
        无参数
    
    • 填充压缩
    ljust(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
    参数:
        width: 指定结果字符串的长度
        fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
    返回值:     
        新串
    注意: 
        fillchar必须是长度为1的字符
        只有原有字符串不足width时才会填充
        不会修改原字符串
       *当需要填充时, 原有字符换靠左, 补充的字符靠右
    
    rjust(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
    参数:
        width: 指定结果字符串的长度
        fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
    返回值: 
        新串
    注意: 
        fillchar必须是长度为1的字符
        只有原有字符串不足width时才会填充
        不会修改原字符串
       *当需要填充时, 原有字符换靠右, 补充的字符靠左
    
    center(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
    参数:
        width: 指定结果字符串的长度
        fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
    返回值: 
        新串
    注意: 
        fillchar必须是长度为1的字符
        只有原有字符串不足width时才会填充
        不会修改原字符串
       *当需要填充时, 原有字符换居中, 如果需要填充个数为奇数, 则先填充右边, 再填充左边
    
    lstrip(chars): 移除原字符串左侧所有的指定字符, 默认为空白字符
    参数:
        chars: 字符集
    返回值: 
        新串
    注意: 
        chars表示的字符集的形式: "abc" -> "a"|"b"|"c"
        每一个字符单独使用, 只要字符串左边出现了abc中的任意一种, 都会被移除, 一直到chars中不包含的字符位置
        不会修改原有字符串
    
    rstrip(chars): 移除原字符串右侧所有的指定字符, 默认为空白字符
    参数:
        chars: 字符集
    返回值: 
        新串
    注意: 
        chars表示的字符集的形式: "abc" -> "a"|"b"|"c"
        每一个字符单独使用, 只要字符串右边出现了abc中的任意一种, 都会被移除, 一直到chars中不包含的字符位置
        不会修改原有字符串
    
    • 分割拼接
    split(sep, maxsplit):讲一个大的字符串分割为几个子字符串
    参数:
        sep: 分隔符
        maxsplit: 分割次数, 默认为有多少分割多少
    返回值: 
        分割后的子字符串组成的列表
    注意: 
        不会修改原字符串
    
    partition(sep): 将字符串根据sep进行分割
    参数:
        sep: 分隔符
    返回值: 
        如果找到, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
        如果没找到, 返回(原字符串, "", "")
    注意: 
        不会修改原字符串
        从左侧查找分隔符
    
    rpartition(sep): 将字符串根据sep进行分割
    参数:
        sep: 分隔符
    返回值: 
        如果找到, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
        如果没找到, 返回("", "", 原字符串)
    注意: 
        不会修改原字符串
        从右侧查找分隔符
    
    splitlines(keepends): 根据换行符(\r, \n)将字符串分割为多个子串
    参数:
        keepends: 布尔类型, 分割后的子串是否保留分隔符
    返回值:
        被换行符分割的多个字串, 组成的列表
    注意: 
        不会修改原字符串
    
    join(iterable): 将可迭代对象通过指定的字符串进行拼接, 得到拼接后的字符串
    参数:
        iterable: 可迭代对象, 例如字符串, 数组, 元组等
    返回值: 
        拼接好的字符串
    代码案例: 
    str = "abc"
    print("-".join(str))  # 打印: a-b-c
    
    • 判定
    isalpha(): 判断字符串中是否所有的字符都是字母, 不区分大小写
    参数:
        无
    返回值:
        布尔类型, 是否全是字符
    注意: 
        被判断的字符串, 至少有一个字符
    
    isdigit():判断字符串中是否所有的字符都是数字
    参数:
        无
    返回值:
        布尔类型, 是否全是数字
    注意: 
        被判断的字符串, 至少有一个字符
    
    isalnum():判断字符串中是否所有的字符都是数字或者字母
    参数:
        无
    返回值:
        布尔类型, 是否全是数字或者字母
    注意: 
        被判断的字符串, 至少有一个字符
    
    isspace(): 字符串中是否所有的字符都是空白符
    参数:
        无
    返回值:
        布尔类型, 是否全是空白符
    注意: 
        被判断的字符串, 至少有一个字符
    
    startswith(prefix, start=0, end=len(str)): 判定一个字符串是否已prefix字符串开头
    参数: 
        prefix: 需要判定的开头字符串
        start: 起点索引, 默认值0
        end: 终点所有, 默认值len(str)
    返回值:
        布尔类型, 字符串是否以指定字符串开头
    
    endswith(prefix, start=0, end=len(str)): 判定一个字符串是否已prefix字符串结尾
    参数: 
        prefix: 需要判定的结尾字符串
        start: 起点索引, 默认值0
        end: 终点所有, 默认值len(str)
    返回值:
        布尔类型, 字符串是否以指定字符串结尾
    
    in: 语句, 判定一个字符串是否被另一个字符串包含
    代码案例
    result = "abc" in "abcdefg"
    print(result)   # 打印: True
    
    not in: 语句, 判定一个字符串是否不被另一个字符串包含
    代码案例
    result = "abc" not in "abcdefg"
    print(result)   # 打印: False
    

    相关文章

      网友评论

          本文标题:Python基础(四): 字符串

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