字符串

字符串的格式化输出

  • str.format(a,b,c,…)
    • ‘xxxx{}xxxx{}’.format(0,1) {}中不指定位置自动按照位置匹配
    • ‘xxxx{1}xxxx{0}’.format(0,1) {}中指定位置,根据位置匹配,位置从0开始
    • ‘xxxx{key1}xxxx{key2}.format(key1=value1,key2=value2)’#根据key1,key2对应值
    • ‘xxxx{0[0]}xxxx{0[1]}’.format(seq) format中是一个列表,则把列表看做0位置,然后再从列表中索引
    • ‘xxxx{0[0]}xxxx{1[0]}’.format(seq1,seq2)
    • ‘xxxx{}xxxx{}’.format(*iterable)#序列解包,传递参数
    • ‘xxxx{key1}xxxx{key2}’,format(**dict)#序列解包,传递参数
  • ‘xxxx%sxxxx%d’%(‘a’,3):
    • 符号 描述
      %c 格式化字符及其ASCII码
      %s 格式化字符串
      %d 格式化整数
      %u 格式化无符号整型
      %o 格式化无符号八进制数
      %x 格式化无符号十六进制数
      %X 格式化无符号十六进制数(大写)
      %f 格式化浮点数字,可指定小数点后的精度
      %e 用科学计数法格式化浮点数
      %E 作用同%e,用科学计数法格式化浮点数
      %g %f和%e的简写
      %G %f 和 %E 的简写
      %p 用十六进制数格式化变量的地址
      • f’xxx{变量或者表达式}xxx’:
        • 优点是不用判断是%s还是%d了

      format函数格式控制方法

      ‘xxxx{序号:格式}’.format()#冒号后面代表了格式

      • 格式的符号与含义与顺序
       :   [填充] [对齐]  [宽度] [,]   [.精度] [类型]
      引导符号 要填充的单个字符,默认是空格 < 左对齐
      > 右对齐
      ^ 居中对齐
      设定槽的输出宽度 数字的千位分隔符 适用于整数和浮点数 用于控制浮点数小数部分的精度(长度)或字符串的最大输出长度 整数类型:b,c,d,o,x,X 浮点数类型:e,E,f,%

      如果要设置多种格式,则必须要按照该表的前后顺序

      一般有两种组合:

      • 填充/对齐/宽度

        • {0:*30}
        • {0:*>30}
      • 分隔符/精度/类型

        • {,.3b}
      • 类型的格式

      类型 描述 类型 描述
      b 输出整数的二进制形式 e 输出浮点数对应的小写字母e的指数形式
      c 输出整数对应的Unicode字符 E 输出浮点数对应的大写字母E的指数形式
      d 输出整数的十进制形式 f 输出标准浮点数形式
      o 输出整数的八进制形式 % 输出浮点数的百分比形式
      x 输出整数的小写十六进制形式    
      X 输出整数的大写写十六进制形式
      from IPython.core.interactiveshell import InteractiveShell
      InteractiveShell.ast_node_interactivity = "all"
      
      '{0:0<5}'.format(3)#左对齐,从左往右放
      '{0:0>5}'.format(5)#右对齐,从右往左放
      '{0:0^5}'.format(5)#先放在中间
      
      '30000'
      
      '00005'
      
      '00500'
      
      import math
      '{0:,}'.format(1e7)
      '{0:,.3f}'.format(math.pi)
      '{0:,.3%}'.format(math.pi)#数字部分保留三位小数
      
      '10,000,000.0'
      
      '3.142'
      
      '314.159%'
      

      字符串的编码

      • 字符串的编码:str.encode(encoding="")#Unicode编码

      • 字节串的解码:byte.decode(encoding="")#解码

      • 编码格式

        • Unicode编码:
          • UTF-8 在UTF-8编码中,英文字符占一个字节,中文字符占用3个字节
          • GBK 在GBK编码中,英文字符占一个字节,中文字符占用2个字节
        • ASCII编码:
      • ASCII编码和Unicode编码的区别:

        • ASCII编码是1个字节,而Unicode编码通常是2个字节,举例如下。

          字母 A 用ASCII编码是十进制的65,二进制的01000001;

          字符 0 用ASCII编码是十进制的48,二进制的00110000,注意字符 ‘0’ 和整数 0 是不同的;

          汉字 中 已经超出了ASCII编码的范围,用Unicode编码是十进制的20013,二进制的01001110 00101101。

          如果把ASCII编码的 A 用Unicode编码,只需要在前面补0就可以,因此, A 的Unicode编码是00000000 01000001。

      正则表达式

      import re
      

      re.findall

      找到所有匹配模式的字符串

      re.findall(r'[135]','12345739')
      
      ['1', '3', '5', '3']
      

      根据match对象的group或groups返回匹配的字符串

      ##返回第一个
      re.match(r'12','3412')#从字符串开始开始匹配,无返回值
      re.match(r'34','3412')#有返回值
      re.search(r'12','3412')#全局匹配
      ##返回所有
      re.finditer(r'12','341212')
      
      <re.Match object; span=(0, 2), match='34'>
      
      <re.Match object; span=(2, 4), match='12'>
      
      <callable_iterator at 0x21b3924a788>
      
      ### re.findall()
      for i in re.finditer(r'(\d)(\w)','35b7sq6z'):
          i.groups()#返回所有组的元组
          i.group(0)#返回匹配的字符串
          i.group(1)#返回第一组
          i.group(2)#返回第二组
      
      ('3', '5')
      
      '35'
      
      '3'
      
      '5'
      
      ('7', 's')
      
      '7s'
      
      '7'
      
      's'
      
      ('6', 'z')
      
      '6z'
      
      '6'
      
      'z'
      

      找一个满足条件的字符串

上一页
下一页