课前补充:

a=10
if a>10:
    pass #占位符,没有操作
else:
    print("<=10")

第四章 字符串


表示方法:

python不支持单字符类型,单个字符也是一个字符串。

  • 使用单引号

    str1='aaa"1234"def' # 单引号中可以包含双引号
    str2='ascd\'sa' #转义符可以包含单引号
    print(str1)
    print(str2)
    
  • 使用双引号

  • 使用三引号

    a='''asasd
    123456'''
    print(a)
    # 输出结果:asasd
    #         123456
    

    可以在三引号之中换行并且不使用换行符。

    b='''asd"asd"'123456'a'''
    print(b)
    # 输出结果:asd"asd"'123456'a
    
字符串注意事项:
  1. 一旦被创建就不可以被修改

  2. 字符串相加产生新对象:

    s1="123"
    s2="456"
    print(s1+s2)
    # 输出结果:123456
    
转义符:
转义字符 描述
(在行尾时) 续行符
\ 反斜杠符号
\’ 单引号
\” 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数yy代表的字符,例如:\o12代表换行
\xyy 十进制数yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
字符串的输出:
  1. 格式化输出:

    a=1
    b=2
    print("%d,%d" %(a,b))
    # 多个数据输出
    
  2. format函数格式化输出:

    • 位置:

      print("{} {}".format("123","456")) # 默认顺序输出
      print("{1} {0}".format("123","456")) # 颠倒位置
      print("{1} {0} {0}".format("123","456")) # 重复输出
      '''
      输出结果:
      123 456
      456 123
      456 123 123
      '''
      
    • 设置参数:

      print("名字:{name},年龄:{age}".format(name="sss",age="18"))
      # 通过字典
      site={"name":"sss","age":"19"}
      print("名字:{name},年龄:{age}".format(**site))
      #通过列表索引
      list1=["sss","14"]
      print("名字:{0[0]},年龄:{0[1]}".format(list1)) #{0[0]},第一个0代表format中的第一个列表,第二个0代表列表中的第一个参数
      '''
      输出结果:
      名字:sss,年龄:18
      名字:sss,年龄:19
      名字:sss,年龄:14
      '''
      
    • 类方法:

      class A(object): #类
          def __init__(self,value): # 构造方法,value初始化
              self.value=value
      A_value=A(45) # 初始化value
      print("value的值为{0.value}".format(A_value))
      
      # 输出结果:value的值为45
      
    • 数字格式化:

      print("{:.2f}".format(3.1415926))
      # 3.14
      print("{:.3f}".format(3.456897))
      # 3.457
      
      数字 格式 输出 描述
      3.1415926 {:.2f} 3.14 保留小数点后两位
      3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
      -1 {:+.2f} -1.00 带符号保留小数点后两位
      2.71828 {:.0f} 3 不带小数
      5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
      5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
      10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
      1000000 {:,} 1,000,000 以逗号分隔的数字格式
      0.25 {:.2%} 25.00% 百分比格式
      1000000000 {:.2e} 1.00e+09 指数记法
      13 {:>10d} 13 右对齐 (默认, 宽度为10)
      13 {:<10d} 13 左对齐 (宽度为10)
      13 {:^10d} 13 中间对齐 (宽度为10)
      11 '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11) 1011 11 13 b 0xb 0XB 进制

      ^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

      + 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

      b、d、o、x 分别是二进制、十进制、八进制、十六进制。

      此外还可以用{}来充当转义符:

      print("{0}对应的第一个位置是{{0}}".format("123456")) #第一个大括号中的0可以省略
      print("{1}对应的第一个位置是{{1}}".format("123456","absdf"))
      # 输出结果:123456对应的第一个位置是{0}
      # 输出结果:absdf对应的第一个位置是{1}
      
字符串的输入:

input()函数:

name=input('请输入名字:')
print(name)
字符串的索引和切片:
  1. 索引:正数索引和负数索引都行。

    #正索引:01234
    'acsdf'
    #负索引:-5-4-3-2-1
    
  2. 切片:从字符串截取部分字符组成新字符,不会对原来的字符做出改动。[start:end:step]

    start、end和step都可以省略,但是第一个冒号不能省略,此时start=0,end为最后,step为1.

    st="123456789"
    print(st[:])
    print(st[1:5:2])
    print(st[1:-1])
    print(st[::-1])
    print(st[::-2])
    '''
    输出结果:
    123456789
    24
    2345678
    987654321
    97531
    '''
    
字符串的运算:
print("*********")
st1='123' # +运算:字符串相连
st='456'
print(st+st1)
print("=========")
st2="123" # *运算符:字符串重复
print(st2*2)
print(2*st2)
print(st2)
print("=========")
we="jzasbcsak" # in和not in:判断会否在指定字符串
print('a' in  we)
print("=========")
wa='123\n456' # r运算符:保持原生态,而不翻译特殊字符
print(wa)
wa=r'123\n456'
print(wa)
wa=r"sa'sfa'aa\n"
print(wa)
wa=r'''as"sd"'dad'aaa\t'''
print(wa)
print("*********")
'''
输出结果:
*********
456123
=========
123123
123123
123
=========
True
=========
123
456
123\n456
sa'sfa'aa\n
as"sd"'dad'aaa\t
*********
'''
字符串的内建函数:
  1. capitalize()函数

    • 语法:str.capitalize()

    • 返回值:返回一个首字母大写的字符串

    • s1="an,bn"
      print(s1.capitalize())
      s1="An,bn"
      print(s1.capitalize())
      s1="An,Bn"
      print(s1.capitalize())
      s1="an,bn"
      print(s1.capitalize())
      '''
      An,bn
      An,bn
      An,bn
      An,bn
      '''
      
  2. center(width)函数

    • 语法:str.center(width)

    • 返回值:返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

    •    s="aba"
      print(s.center(10))
      '''
         aba    
      ''' 
      
  3. count(str,beg=0,end=len(string))函数

    • 语法:string.count(str,beg=0,end=len(string))

    • 返回值:返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

    • s="aaaabccs"
      print(s.count("a",0,-1))
      '''
      4
      '''
      
  4. decode(encoding='UTF-8',errors='strict')函数

    • 语法:str.decode(encoding='UTF-8',errors='strict')

    • 返回值:以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'

    • 说明:encoding是要使用的编码,有关所有编码方案的列表:[标准编码](codecs — Codec registry and base classes — Python 3.9.7 documentation)

      errors可以设置不同错误的处理方案。错误默认的值是'strict',这意味着编码错误会引发UnicodeError,其他可能的值是'ignore','replace','xmlcharrefreplace','backslashreplace'以及通过codecs.register_error()注册的任何其他名称。

    • s="this is a example"
      print(s.encode('UTF-16-le','strict'))
      '''
      b't\x00h\x00i\x00s\x00 \x00i\x00s\x00 \x00a\x00 \x00e\x00x\x00a\x00m\x00p\x00l\x00e\x00'
      
      '''
      
  5. swapcase()函数

    • 语法:str.swapcase()

    • 返回值:将原字符串中的大小写翻转然后返回

    • s="This is A eXample"
      print(s.swapcase())
      '''
      tHIS IS a ExAMPLE
      '''
      
  6. max()函数

    • 语法:max(str)

    • 返回值:返回字符串str中最大的字母

    • s1="12sSd"
      print(max(s1))
      '''
      s
      '''
      # min()返回字符串中最小的字母
      
  7. replace(str1,str2,num=string.count(str1))函数

    • 语法:string.replace(str1,str2,num=string.count(str1))

    • 返回值:将string中的str1替换为str1,如果num指定,则替换次数不超过num。

    • str="this is a idly person"
      print(str.replace('i','33',2))
      '''
      th33s 33s a idly person
      '''
      
  8. split(str="",num=string.count(str))函数

    • 语法:string.split(str="",num=string.count(str))

    • 返回值:以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符串

    • str="they\\feel\\iligated"
      print(str.split("\\",2))
      '''
      ['they', 'feel', 'iligated']
      '''