Python字符串详解

一、字符串定义

1. 单行字符串

's'和"s"

2. 多行字符串

'''s''' 注意与多行注释进行区分

二、转义符

  • 换行: \n
  • 反斜杠: \
  • 单引号: ’
  • 双引号: "
  • 制表符: \t

三、%操作符格式化

1. 字符串:%s

  • 可以结合元组使用

    a='%s是第%d个字母'
    b=('H',8)
    C=('T',20)
    print(a%b)#输出:H是第8个字母
    print(a%c)#输出:T是第20个字母
    
  • 注意元组中元素个数必须与字符串操作符数量相同,且一一对应

    a='%s是第%d个字母'
    b=('H',8,3)
    print(a%b)
    #输出:not all arguments converted during string formatting 报错
    

2. 十进制整数:%d

3. 浮点数:%f

print('.2f'%6)
#输出6.00
print('.2f'%10/3)
#报错

注意%与+ - * /等同级,故从左到右运算

4. 字符:%%

5. format方法格式化

"我叫{},今年{},性别{}".format("小花",24,"女")
#输出:我叫小花,今年24,性别女
  • 字符串中{}的默认顺序为:0 1 2
  • format参数中的顺序为: 0 1 2

注意format中的参数可以多,不能少

"我叫{1},今年{0},性别{2}".format(24,"小花","女")
#输出:我叫小花,今年24,性别女

顺序可以指定

"我叫{0},今年{0},性别{0}".format("不知道")
#输出:我叫不知道,今年不知道,性别不知道

可以全部指定为同一个参数

"我叫{name},今年{age}".format(name="小花",age=24)
#输出:我叫小花,今年24

可以给每个参数命名

  • format方法的格式控制

    • :<填充><对齐><宽度><,><.精度><类型>


      • 引导符号

      • <填充>
        用于填充的 单个字符

      • <对齐>

        • 左对齐:<
        • 右对齐:>
        • 居中对齐: ^
      • <宽度>

        • 槽设定的输出宽度
      • <,>

        • 数字的千位分隔符
      • <.精度>

        • 浮点小数的精度
        • 字符串最大输出长度
      • <类型>

        • 整数类型:b,c,d,o,x,X
        • 浮点数类型:e,E,f,%
          • 二进制:b
          • UNICOD字符:c
          • 十进制:d
          • 八进制:o
          • 十六进制小写字母:x
          • 十六进制大写字母:X
          • 科学计数法:e,E
          • 定点表示法:f
          • 百分比:%
        "{0:^20}".format("PYTHON")
        #输出:'=======PYTHON======='
        
        "{0:*>20}".format("BIT")
        #输出:'*****************BIT'
        
        "{:10}".format("BIT")
        #输出:'BIT       '
        

        默认左对齐,默认填充空格

四、字符串的增删改查

  • 字符串是不可变类型,在字符串中所有涉及原序列改变的操作,都是重新生成了一个字符串

1. 字符串增加函数

  • str.center(width,[fillchar])

    • 返回一个指定宽度的居中字符串,width表示填充之后整个新的字符串长度 ,fillchar表示需要填充的字符,fillchar可以省略默认填充的字符是空格

      'hello'.center(10,'-')
      #输出:--hetao---
      
  • str.ljust(width,[fillchar])

    • 原字符串居左显示

      'hello'.ljust(10,'~')
      #输出:hello~~~~~
      
  • str.rjust(width,[fillchar])

    • 原字符串居右显示

      'hello',rjust.(10,'#')
      #输出:#####hello
      

2. 字符串删除函数

  • str.strip()

    • 用于移除字符串头尾的空格或指定字符,该方法只能删除开头或是结尾的字符,不能删除中间部分的字符

      '*****hello*****'.strip('*')
      #输出:hello
      	***贪婪模式,有多少删多少,但必须在开头和结尾***
      
  • str.lstrip()

    • 用于移除字符串左边的空格或指定字符
  • str.rstrip()

    • 用于移除字符串右边的空格或指定字符

3. 字符串修改函数

  • str.replace(old,new,max)
    • old表示旧字符串new表示新字符串max表示在原字符串上需要替换的最大次数默认全部替换

      'today is a good day today is a good day today is a good day'.replace('good','nice',2)
      #输出:today is a nice day today is a nice day today is a good day
      
  • tri.title()
    • 字符串所有单词的首字母大写

      'today is a good day'.title()
      #输出: Today Is A Good Day
      

      以空格为每个单词的间隔

4. 字符串查找函数

  • str.count(sub)

    • 返回sub子串出现的次数区分大小写

      'good good good'.count('good')
      #输出:3
      

      计数时不会重复利用

      'abababab'.count('abab')
      #输出:2
      
  • string.find(str,start,end)

    • 检测str是否包含在string中,如果是,则返回第一次匹配到的结果的起始字符索引值,否则返回-1,start和end可以指定查找索引范围(左闭右开),不指定默认从起始点开始

      'good good good'.find('0',5,9)
      #输出:6
      'good good good'.find('z')
      #输出:-1
      
  • string.rfind(str)

    • 右向左检测,和find()基本类似,但是查找方向不一致

      'good good good'.rfind('o')
      #输出:12
      

      输出的还是正向索引

  • string.index(str,start.end)

    • 跟find()方法一样,只不过如果str不在,string中会报一个异常

      'good good good'.index('o',5,9)
      #输出:6
      'good good good'.index('z')
      #输出:ValueError: substring not found
      
  • string.rindex(str)

    • 右向左检测,和index()基本类似,但是查找方向不一致

      'good good good'.rindex('o')
      #输出:12
      

      输出的还是正向索引

  • str.startswith(obj)

    • 检查字符串是否为obj开头,如果是则返回True,否则返回False。如果参数start和end指定值,则在指定范围内检查
  • str.endswith(obj)

    • 检查字符串是否以obj结尾,如果是则返回True,否则返回False。如果参数start和end指定值,则在指定范围内检查

5. 字符串其他常用函数

  • 字符串自身属性函数

    • len(str)
      • 长度,返回字符串str的长度
        len('一二三123')
        #输出:6
        
    • str(x)
      • 任意类型x所对应的字符串形式

        str(1.23)
        #输出:'1.23'
        
        str([1,2])
        #输出:"[1,2]"
        
      • 列表、元组这类的数据转换为字符串类型时会在逗号后面加一个空格

        print(len(str([1,2])))
        #输出:6      '[1,2]'
        
    • eval(str)
      • 将str转化为有效表达式,参与运算,并返回表达式的值
        eval("1+2")
        ##输出:3
        
        eval("1+2"+"3")
        ##输出:24
        
        先进行字符串拼接得到’1+23’,再进行表达式运算,eval()函数的参数只能是一个字符串
  • 进制转换函数

    • bin(num)
      • 返回整数num对应二进制的小写形式字符串
    • oct(num)
      • 返回整数num对应八进制的小写形式字符串
    • hex(num)
      • 返回整数num对应十六进制的小写形式字符串
  • 编码解码函数

    • chr(u)
    • ord(str)
    • 运用:规定1对应A,2对应B,3对应C,输入123,输出ABC
      A:65 a:97
  • 字符串大小写转换函数

    • str.lower()
      • 返回字符串str的副本,全部字符变为小写
        'HELLO'.lower()
        #输出:hello
        
    • str.upper()
      • 返回字符串str的副本,全部字符变为大写
        'hello'.upper()
        #输出:HELLO
        
    • str.swapcase()
      • 返回字符串str的副本,字符小写变大写大写变小写
        'HEllo'.swapcase()
        #输出:heLLO
        
  • 字符串种类判断函数

    • str.islower()
      • 如果str所有字符都是小写字母则返回True,否则返回False
    • str.isupper()
      • 如果str所有字符都是大写字母则返回True,否则返回False
    • str.isalpha()
      • 如果str所有字符都是字母则返回True,否则返回False
    • str.isdigit()
      • 如果str所有字符都是数字则返回True,否则返回False
    • str.isalnum
      • 如果str所有字符都是字母或数字则返回True,否则返回False
    • str.isspace()
      • 如果str中只包含空白字符,则返回True,否则返回False
  • 字符串分割合并函数

    • str.split(sep,num)
      • sep作为分割符切割原字符串,如果指定了num,则表示仅使用num个字符串截取原字符串,sep默认为空格,split返回的结果是一个列表
        'My name is Hua Hua'.split()
        #输出:['My','name','is','Hua','Hua']
        
        'My-name-is-Hua-Hua'.split('-',2)
        #输出:['My','name','is-Hua-Hua']
        
    • str.join(iter)
      • 将iter变量的每一个元素后面增加一个str字符串,返回值为一个字符串

        '-'.join('hello')
        #输出:h-e-l-l-o
        

        只在中间加,首尾不加

        '+'.join(['1','2','3','4'])
        #输出:1+2+3+4
        

        可以对列表使用,但依旧返回一个字符串

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值