Swift51.com
麦子学院 头像
麦子学院  2017-08-23 14:35

Python学习之String模块详解

回复:0  查看:2551  
本文和大家分享的主要是python String 模块相关内容,一起来看看吧,希望对大家 学习python有所帮助。
  String 模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作。
   1. 常用方法
  str.capitalize() 把字符串的首字母大写
  str.center(width) 将原字符串用空格填充成一个长度为 width 的字符串,原字符串内容居中
  str.count(s) 返回字符串 s str 中出现的次数
  str.decode(encoding=’UTF-8’,errors=’strict’) 以指定编码格式解码字符串
  str.encode(encoding=’UTF-8’,errors=’strict’) 以指定编码格式编码字符串
  str.endswith(s) 判断字符串 str 是否以字符串 s 结尾
  str.find(s) 返回字符串 s 在字符串 str 中的位置索引,没有则返回 -1
  str.index(s) find() 方法一样,但是如果 s 不存在于 str 中则会抛出异常
  str.isalnum() 如果 str 至少有一个字符并且都是字母或数字则返回 True, 否则返回 False
  str.isalpha() 如果 str 至少有一个字符并且都是字母则返回 True, 否则返回 False
  str.isdigit() 如果 str 只包含数字则返回  True  否则返回  False
  str.islower() 如果 str 存在区分大小写的字符,并且都是小写则返回 True  否则返回 False
  str.isspace() 如果 str 中只包含空格,则返回  True ,否则返回  False
  str.istitle() 如果 str 是标题化的 ( 单词首字母大写 ) 则返回 True ,否则返回 False
  str.isupper() 如果 str 存在区分大小写的字符,并且都是大写则返回 True  否则返回 False
  str.ljust(width) 返回一个原字符串左对齐的并使用空格填充至长度 width 的新字符串
  str.lower() 转换 str 中所有大写字符为小写
  str.lstrip() 去掉 str 左边的不可见字符
  str.partition(s) s str 切分成三个值
  str.replace(a, b) 将字符串 str 中的 a 替换成 b
  str.rfind(s) 类似于  find() 函数,不过是从右边开始查找
  str.rindex(s) 类似于  index() ,不过是从右边开始
  str.rjust(width) 返回一个原字符串右对齐的并使用空格填充至长度 width 的新字符串
  str.rpartition(s) 类似于  partition() 函数 , 不过是从右边开始查找
  str.rstrip() 去掉 str 右边的不可见字符
  str.split(s) s 为分隔符切片 str
  str.splitlines() 按照行分隔,返回一个包含各行作为元素的列表
  str.startswith(s) 检查字符串 str 是否是以 s 开头,是则返回 True ,否则返回 False
  str.strip() 等于同时执行 rstrip() lstrip()
  str.title() 返回 标题化 str, 所有单词都是以大写开始,其余字母均为小写
  str.upper() 返回 str 所有字符为大写的字符串
  str.zfill(width) 返回长度为  width  的字符串,原字符串 str 右对齐,前面填充 0
   2.字符串常量
  string.ascii_lowercase 小写字母 ’abcdefghijklmnopqrstuvwxyz’
  string.ascii_uppercase 大写的字母 ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
  string.ascii_lettersascii_lowercase ascii_uppercase 常量的连接串
  string.digits 数字 0 9 的字符串 :’0123456789’
  string.hexdigits 字符串 ’0123456789abcdefABCDEF’
  string.letters 字符串 ’abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
  string.lowercase 小写字母的字符串 ’abcdefghijklmnopqrstuvwxyz’
  string.octdigits 字符串 ’01234567’
  string.punctuation 所有标点字符
  string.printable 可打印的字符的字符串。包含数字、字母、标点符号和空格
  string.uppercase 大学字母的字符串 ’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
  string.whitespace 空白字符  ‘\t\n\x0b\x0c\r ‘
   3.字符串模板Template
  通过string.Template 可以为 Python 定制字符串的替换标准 , 下面是具体列子:
  >>>from string import Template>>>s = Template('$who like $what')>>>print s.substitute(who='i', what='python')
  i like python
  >>>print s.safe_substitute(who='i') #  缺少 key 时不会抛错
  i like $what
  >>>Template('${who}LikePython').substitute(who='I') #  在字符串内时使用 {}'ILikePython'
  Template 还有更加高级的用法,可以通过继承 string.Template,  重写变量 delimiter( 定界符 ) idpattern( 替换格式 ),  定制不同形式的模板。
   import string
  template_text = ''' Delimiter : $de Replaced : %with_underscore Ingored : %notunderscored '''
  d = {'de': 'not replaced',
  'with_underscore': 'replaced',
  'notunderscored': 'not replaced'}
   class  MyTemplate(string.Template):
  重写模板 定界符 (delimiter) "%",  替换模式 (idpattern) 必须包含下划线 (_)
  delimiter = '%'
  idpattern = '[a-z]+_[a-z]+'
   print string.Template(template_text).safe_substitute(d)  #  采用原来的 Template 渲染
   print MyTemplate(template_text).safe_substitute(d)  #  使用重写后的 MyTemplate 渲染
  输出:
  Delimiter : not replaced
  Replaced : %with_underscore
  Ingored : %notunderscored
  Delimiter : $de
  Replaced : replaced
  Ingored : %notunderscored
  原生的Template 只会渲染界定符为 $ 的情况,重写后的 MyTemplate 会渲染界定符为 % 且替换格式带有下划线的情况。
   4.常用字符串技巧
  · 1. 反转字符串
>>> s = '1234567890'
>>> print s[::-1]
  0987654321
  · 2. 关于字符串链接
  尽量使用join() 链接字符串,因为 ’+’ 号连接 n 个字符串需要申请 n-1 次内存 , 使用 join() 需要申请 1 次内存。
  · 3. 固定长度分割字符串
>>>  import re
>>> s = '1234567890'
>>> re.findall(r'.{1,3}', s)  #  已三个长度分割字符串
  ['123', '456', '789', '0']
  ·4. 使用 () 括号生成字符串
  sql = (' SELECT  count()  FROM  table '
  ' WHERE  id = "10" '
  ' GROUP  BY sex')
  print sql
  SELECT count() FROM table WHERE id = "10" GROUP BY sex
  · 5. print 的字符串写到文件
  >>> print >> open("somefile.txt", "w+"), "Hello World"  # Hello World 将写入文件 somefile.tx
来源: 伯乐在线