欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day4 字符串

程序员文章站 2022-03-01 13:05:14
...

1. 获取字符串中的字符

  1. 获取单个字符
    字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。
    下标从0开始依次增加的,0对应的是第一个字符;也可以是从-1开始依次减少,-1代表最后一个字符。
    例如'hello' -> h->0 e->1 l->2 l->3 o->4
    -> h->-5 e->-4 l->-3 l->-2 o->-1
    范围:(0-len-1),(-1 ~ -len)
    • 获取单个字符的语法:字符串[下标] - 获取字符串中指定下标对应的字符
    • 说明:字符串 - 只要是字符串的表达式都可以;[] - 固定写法;下标 - 需要获取的字符对应的下标;下标不能越界
    str1 = 'I Love You'
    len1 = len(str1)
    print(len1, str1[-5], 'I Love You'[-5 + len1])
    """
    print(str1[11])    IndexError: string index out of range 数组下标越界
    """
    
  2. 获取部分字符(字符串切片)
    1. 方法1:
      1. 语法:字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下标前为止。每次下标值加上步长
      2. 说明
        字符串 - 只要是字符串的表达式都可以,例如:字符串字面量,字符串变量
        [::] - 固定写法
        开始下标、结束下标 - 下标值(这儿的下标可以越界)
        步长 - 必须是整数,整数和负数都可以,如果步长是正,是从开始下标从前往后获取,反之,则相反
      3. 注意
        当步长为正,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的前面,否则结果为空
        当步长为负,要求开始下标对应的字符的位置,必须在结束下标对应的字符的位置的后面,否则结果为空
        结束下标一定取不到
    print(str1[0:9:1])
    print(str1[-1:-10:-1])
    print(str1[9:0:-1])
    print(str1[-10:-1:1])
    print(str1[-1:-100:-1])
    print(str1[100:-100:-1])
    
    1. 方法2:(省略步长)
      字符串[开始下标:结束下标]-->默认步长为1:从开始下标到结束下标前为止,一个一个的取
    2. 方法3:(省略开始下标和结束下标)
      • 省略开始下标
        字符串[:结束下标:步长(可省略)]
        当步长为整数,从字符串的第一个字符开始取到结束下标前为止;
        当步长为负数,从字符串的最后一个字符开始到结束下标前为止;
      • 省略结束下标
        字符串[开始下标::步长(可省略)]
        当步长为整数,从字符串的开始下标开始取到字符串最后一个字符为止;
        当步长为负数,从字符串的开始下标开始取到字符串的第一个字符为止;
    print(str1[:6], str1[:6:-1], sep=',')
    print(str1[2:], str1[2::-1], sep=',')
    print(str1[::-1])               #字符串倒序
    print(str1[-1::-1])
    print(str1[:-len(str1) - 1: -1])
    

2. 字符串的相关运算

  1. 字符串支持的运算符:+, *, >, <, ==, !=, >=, <=
    python中的字符串支持数学运算符中的+和 *,以及所有的比较运算符
    a. +: 字符串1 + 字符串2 - 将字符串1和字符串2拼接在一起
    注意:字符串不能和数字混合相加!
    b. *: 字符串 * N - N是正整数;字符串重复N次,产生一个新的字符串
    new_str = 'abc' + '123'
    print(new_str)
    name = '张三'
    message = '吃了没'
    print(name + message)       
    print('abc' * 3)
    
    c. 比较是否相等:==,!=: 可以判断两个字符串是否相等或者不等
    d. 字符比较大小: 从第一个字符开始依次往后找,找到第一个不相等的字符对,判断他们的编码值的大小,编码值大,对应的字符串就大,就不在往后比较了
    应用
    1. 判断是否是小写字母: 'a' <= char1 <= 'z' <==> char1 >= 'a' and char1 <= 'z'
    2. 判断是否是大写字母: 'A' <= char1 <= 'Z' <==> char1 >= 'A' and char1 <= 'Z'
    print('abc' == 'abc')
    print('abc' == 'bac')
    print('abc' != 'abc')
    print('dcb' > 'abcde')
    (#) 判断一个字符串中的第三个字符是否是字母
    str1 = 'shk23.s哎y23'
    char1 = str1[2]
    print('a' <= char1 <= 'z' or 'A' <= char1 <= 'Z')
    print('是否是中文:', '\u4e00' <= str1[-4] <= '\u9fa5')
    
  2. in 和 not in操作:
    字符串1 in 字符串2 -> 判断字符串1是否在字符串2里,判断字符串1是否是字符串2的子串
    字符串1 not in 字符串2 -> 判断字符串1是否不在字符串2里,判断字符串1是否不是字符串2的子串
    print('abc' in 'hello abc')             #True
    print('abc' in 'ahello bc')             #False
    
  3. len()函数:
    len(序列) - 获取序列长度、获取序列中元素的个数
    len(字符串) - 获取字符串的长度(字符的个数)
    注意
    1.一个可以转义的转义字符的长度是1
    2.一个编码字符的长度是1
    3.一个空格字符的长度1
    4.手动在键盘上按一个tab,一般是4个空格,长度为4;一个\t表示的tab,长度为1
    str1 = '    abc'
    print(str1)
    print(len(str1))
    str2 = '\tabc'
    print(str2)
    print(len(str2))
    

3. 格式字符串

  1. 什么是格式字符串:
    在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化
  2. 语法:
    包含占位符的字符串加%(每个占位符对应的值1,值2,值3,...)
  3. 占位符
    %s %d %f %c(将数字对应的编码转换为字符),(%.nf) -> 保留小数点后n位小数
    % - 固定写法
    () - 固定写法,字符串中只有一个占位符的时候可以省略
    括号中的值 - 值和占位符要一一对应,个数,类型,位置都要对应
    name = input('姓名:')
    age = 18
    sex = '男'
    salary = float(input('年薪:'))
    message = '我叫%s,今年%d岁,性别:%s,月薪%.2f万,%c' % (name, age, sex, salary,98)
    print(message)
    

4. 类型转换

  1. 语法:
    类型名(数据) - 将制定数据转换为指定类型
    说明:
    类型名 - 任何python支持的,或者自定义的类型都可以
    数据 - 需要转换的对象(类型不同要求可能不一样)
  2. 转换实例:
    int(数据) --> 将其他数据转换成整型
    float(数据) --> 将其他数据转换为浮点型
    bool(数据) --> 将其他类型转换成布尔
    • 转换成整型
      a = int(12.8)
      b = int(True)
      c = int('13')
      print(a)        #直接保留整数部分,而不是四舍五入
      print(b)        #布尔可以转换成整数,True为1,False为0
      print(c)        #本身只有数字的整数的字符串可以转换成为整型
      
    • 转换为浮点型
      a = float(12)   #所有整数都可以转换为浮点型,在后面加   .0
      b = float(True) #True 1.0   False 0.0
      c = float('12.9')#去掉引号后,本身只要是数字就可以转换
      print(a,b,c)
      
    • 转换为布尔类型:python中所有的数据可以转换为布尔
      a = bool(100)   #所有为0  空的值都为False
      b = bool(0.0)
      c = bool('')
      d = bool([])
      e = bool({})
      f = bool(None)
      print(a, b, c, d, e, f)
      
    • 转换成字符串类型
      python中所有的数据都可以转换趁该字符串,而且转换的时候就是单纯的在最外面加引号