Python基础教程笔记——使用字符串

本文深入探讨了Python中字符串的基本操作、格式化方法及高级应用,包括分片、乘法、索引、求长度、最大值、最小值判断、成员资格检查、字符串式化、模板式化以及完整版字符串式化。文章详细介绍了转换说明符、字段宽度、精度、符号、对齐和0填充等特性,并通过实例展示了如何高效地进行字符串处理。

1 基本字符串操作

  1. 说明:字符串也是序列的一种,所以分片,乘法,索引,求长度,最大, 最小,判断成员资格等都可以应用在字符串上;

  2. 注意:字符串是不可变的,所以不能对其进行赋值

  3. 例子

    1:  >>> mystr="Test string"2:  >>> mystr[0] = 't'3:  Traceback (most recent call last):4:  File "<pyshell#1>", line 1, in <module>5:    mystr[0] = 't'6:  TypeError: 'str' object does not support item assignment7:  >>>
    

2 字符串格式化:精简版

 

2.1 用字符串格式化操作符

  1. 说明:字符串格式化使用字符串格式化操作符百分号( % )实现

  2. 在操作符的左侧是格式化字符串右侧是希望被格式化的值

  3. 注意:

    1. 只有元组和字典可以被格式化为一个以上的值列表和其他序列会被格式化为一个值

    2. 转换说明符,用于标记需要插入转换值的位置;

    3. 如果在格式化字符串中要输出百分号,%%

  4. 例子:

     1:  #一般格式化
     
  5.  2:  >>> myformat = "Hello, my name is %s %s" 
    ​ 
  6. 3:  >>> name = ('Bill','Gunn') 
    ​
  7. 4:  >>> print (myformat % name) 
    ​
  8. 5:  Hello, my name is Bill Gunn 
    ​
  9. 6:  >>> 
    ​
  10. 7:   
    ​
  11. 8:  #用列表格式化 
    ​
  12. 9:  >>> myformat = 'Hello, my name is %s'
    ​
  13. 10:  >>> name=['Bill', 'Gunn']
    ​
  14. 11:  >>> print(myformat % name)
    ​
  15. 12:  Hello, my name is ['Bill', 'Gunn']
    ​
  16. 13:  
    ​
  17. 14:  #打印浮点数
    ​
  18. 15:  >>> import math
    ​
  19. 16:  >>> print ("PI = %.5f" % pi)
    ​
  20. 17:  PI = 3.14159
    ​
  21. 18:  
    ​
  22. 19:  #打印百分号
    ​
  23. 20:  >>> print("%.2f%%"% 22.3)
    ​
  24. 21:  22.30%
  25. 22:  >>>
    

2.2 用string的Template格式化字符串

  1. 说明:类似于Unix Shell中的变量替换,使用substitute方法,将字符串 模板中的$foo替换为传递进来的参数foo

  2. 例子:

     1:  #从string模块中导入Template 
     
  3. 2:  >>> from string import Template 
    ​
  4. 3:  #创建模板 
    ​
  5. 4:  >>> myformat = Template("My name is $name") 
    ​
  6. 5:  #替换变量并打印 
  7. 6:  >>> print(myformat.substitute(name="Bill Gunn")) 
    ​
  8. 7:  My name is Bill Gunn 
    ​
  9. 8:  >>> 
    ​
  10. 9:  
    ​
  11. 10:  #输出美元符号的方法,在模板里输入两个$
  12. 11:  >>> mytemplate = Template("The price is $$$price")
    
  13. 12:  >>> mytemplate.substitute(price=100)
    ​
  14. 13:  'The price is $100'
    ​
  15. 14:  >>>
    ​
  16. 15:  
    ​
  17. 16:  #如果参数与后面的字符串相连,需要用大括号将其括起来
    
  18. 17:  >>> from string import Template
    ​
  19. 18:  >>> mytemplate = Template("It's ${x}tastic!")
    ​
  20. 19:  >>> mytemplate.substitute(x='slum')
    ​
  21. 20:  "It's slumtastic!"
    
  22. 21:  >>>
    ​
  23. 22:  
    ​
  24. 23:  #使用字典替换参数
    
  25. 24:  >>> mytemplate = Template("My $property is $value")
    ​
  26. 25:  >>> name = {}
    ​
  27. 26:  >>> name["property"] = "name"
    ​
  28. 27:  >>> name["value"] = "Bill Gunn"
    ​
  29. 28:  >>> mytemplate.substitute(name)
    ​
  30. 29:  'My name is Bill Gunn'
    ​
  31. 30:  >>>
    ​
  32. 31:  
    

3 字符串格式化:完整版

  1. 说明:字符串格式化操作符的右操作数如果是元组,那么在格式化字符串 中必须将元组中的各个元素都有对应的转义说明符。

  2. 例子:

     1:  >>> data = tuple(list("123")) 
     
  3. 2:  >>> data 3:  ('1', '2', '3') 
    ​
  4. 4:  #格式化字符串中只有一个转义说明符,而元组中有三个元素,转换会报错 
    ​
  5. 5:  >>> print ("data is %s" % data) 
    ​
  6. 6:  Traceback (most recent call last): 
    ​
  7. 7:    File "<pyshell#18>", line 1, in <module> 
    ​
  8. 8:      print ("data is %s" % data) 
    ​
  9. 9:  TypeError: not all arguments converted during string formatting
    ​
  10. 10:  #显示元组中的全部元素
    ​
  11. 11:  >>> print ("data is %s %s %s" % data)
    

  12. 12:  data is 1 2 3
    ​
  13. 13:  >>>
    ​
  14. 14:  
    

3.1 转换说明符

  1. 转换说明符

     
    转义说明符 含义
    d,i 带符号的十进制整数
    o 不带符号的八进制
    u 不带符号的十进制
    x 不带符号的十六进制(小写)
    X 不带符号的十六进制(大写)
    e 科学计数法的浮点数(小写)
    E 科学计数法的浮点数(大写)
    f,F 十进制浮点数
    g 如果指数大于-4或者小于精度值则和e相同,否则和f相同
    G 如果指数大于-4或者小于精度值则和E相同,否则和F相同
    C 单字符(接受整数或者单字符字符串)
    r 字符串(使用repr转换任意Python对象)
    s 字符串(使用str转换任意Python对象)

3.2 简单转换

  1. 例子:

     1:  #十进制整数 
     
  2. 2:  >>> print ("The price is $%d" % 12) 
    ​
  3. 3:  The price is $12 
    ​
  4. 4:   
    ​
  5. 5:  #十六进制整数 
    ​
  6. 6:  >>> print ("Hex %x" % 12) 
    ​
  7. 7:  Hex c 
    ​
  8. 8:   
    ​
  9. 9:  #八进制整数10:  >>> print ("Oct %o" % 12)
    ​
  10. 11:  Oct 14
    ​
  11. 12:  >>>
    ​
  12. 13:  
    

3.3 字段宽度和精度

  1. 说明:

    1. 字段宽度:转换后的值所保留的最小字符个数

    2. 字段精度:转换后,结果中应该的小数位数

    3. 可以使用*作为字段宽度或者精度

  2. 例子:

     1:  #限制宽度 
     
  3. 2:  >>> "%10f" % math.pi 
    ​
  4. 3:  '  3.141593' 
    ​
  5. 4:   
    ​
  6. 5:  #限制小数位数 
    ​
  7. 6:  >>> "%5.2f" % math.pi 
    ​
  8. 7:  ' 3.14' 
    ​
  9. 8:   
    ​
  10. 9:  #用星号限制宽度和精度,下例中,宽度为10,精度为5
    ​
  11. 10:  >>> '%*.*s' % (10, 5, 'adfasdfadsfasdfasdfasdf')
    ​
  12. 11:  '     adfas'
    ​
  13. 12:  >>>
    ​
  14. 13:  
    

3.4 符号,对齐和 0 填充

  1. 说明:

    1. 零:宽度不够时用数字0填充;

    2. 负号:左对齐;

    3. 正号:不管是正数还是负数都标记出符号

    4. 空格:宽度不够时用空格填充;

  2. 例子:

     1:  #空白补0 
     
  3. 2:  >>> print ("%010f" % math.pi) 
    ​
  4. 3:  003.141593 
    ​
  5. 4:   
    ​
  6. 5:  #左对齐 
  7. 6:  >>> "%-10.2f" % math.pi 
    ​
  8. 7:  '3.14      ' 
    ​
  9. 8:   
    ​
  10. 9:  #空白右对齐
  11. 10:  >>> print("% 5d\n% 5d" % (123, 12))
    ​
  12. 11:    123
    ​
  13. 12:     12
    ​
  14. 13:  
    ​
  15. 14:  #显示正负符号
  16. 15:  >>> print ("%+5d\n%+5d" % (123, -123))
    ​
  17. 16:   +123
    ​
  18. 17:   -123
    ​
  19. 18:  >>>
    ​
  20. 19:  
    

4 字符串方法

 

4.1 find

  1. 说明:用于在长字符串中查找子字符串,如果找到,则返回子字符串在左 侧第一次出现的索引,没找到返回-1,在查找时,还可以指定在长字符串 中查找的范围,提供起始索引和结束索引作为查找的参数;

  2. 注意:查找时,包括起始索引位置,但是不包括结束索引的位置;

  3. 例子:

     1:  >>> string.ascii_letters 
     
  4. 2:  'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 
    ​
  5. 3:  >>> letters = string.ascii_letters 
    ​
  6. 4:  >>> letters.find('AB') 
    ​
  7. 5:  26 
    ​
  8. 6:  >>> letters.find('X',30,-1) 
    ​
  9. 7:  49 
    ​
  10. 8:  >>> letters.find("AB",26) 
    ​
  11. 9:  2610:  
    

4.2 join

  1. 说明:将队列中的元素用字符串连接起来,并且列表中的元素必须是字符 串

  2. 例子:

    1:  >>> data = list('123456')
    
  3. 2:  >>> data
    ​
  4. 3:  ['1', '2', '3', '4', '5', '6']
    ​
  5. 4:  >>> "AB".join(data)
    ​
  6. 5:  '1AB2AB3AB4AB5AB6'
    ​
  7. 6:  >>> 
    
    7:  
    

4.3 lower

  1. 说明:将字符串转换成小写字母,并返回,但是原字符串不改变;

  2. 例子:

    1:  >>> mystr="ABCD"
    
  3. 2:  >>> mystr.lower()
    ​
  4. 3:  'abcd'
    ​
  5. 4:  >>> mystr
    ​
  6. 5:  'ABCD'
    ​
  7. 6:  >>> 
    
    7:  
    

4.4 replace

  1. 说明:返回所有匹配项都被替换之后的字符串

  2. 例子:

    1:  >>> mystr = "My name is Geng Qi"
    
  3. 2:  >>> mystr.replace("Geng Qi", "Bill Gunn")
    ​
  4. 3:  'My name is Bill Gunn'
    ​
  5. 4:  >>> 
    
    
    

4.5 split

  1. 说明:将字符串分割成序列;

  2. 注意:如果不提供分割符,则会将空白符当作分割符

  3. 例子

     1:  #以加号为分割符 
     
  4. 2:  >>> mystr = "1+2+3+4+5+6" 
    ​
  5. 3:  >>> mystr.split('+') 
  6. 4:  ['1', '2', '3', '4', '5', '6'] 
    ​
  7. 5:   
    ​
  8. 6:  #不提供分割符时,以空白符为分割符 
    ​
  9. 7:  >>> mystr = "This    is a       test string" 
    ​
  10. 8:  >>> mystr.split() 
    ​
  11. 9:  ['This', 'is', 'a', 'test', 'string']
    ​
  12. 10:  >>> 
    
    11:  
    

4.6 strip

  1. 说明:去除两侧的空白,也可以去除指定的字符

  2. 例子:

     1:  >>> mystr = "           asdfad adfasf asdf                      " 
     
  3. 2:  >>> mystr 
    ​
  4. 3:  '     \tasdfad adfasf asdf       \t\t' 
    ​
  5. 4:  #去除空白符
  6. 5:  >>> mystr.strip() 
  7. 6:  'asdfad adfasf asdf' 
    ​
  8. 7:   
    ​
  9. 8:  #去除指定字符 
  10. 9:  >>> mystr.strip('\t')
    ​
  11. 10:  '     \tasdfad adfasf' asdf       '
    ​
  12. 11:  >>> 
    ​
  13. 12:  
    

4.7 translate

  1. 说明:translate是单字替换,可以同时替换多个字符

  2. 例子:

    1:  >>> table = str.maketrans('cs', 'kz')
    
  3. 2:  >>> table
    
  4. 3:  {115: 122, 99: 107}
    
  5. 4:  >>> "Please don't knock at my door!".translate(table)
    ​
  6. 5:  "Pleaze don't knokk at my door!"
    ​
  7. ​6:  
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值