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_letters ascii_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定制字符串的替换标准,下面是具体列子:

  1. >>>from string import Template
  2. >>>s = Template('$who like $what')
  3. >>>print s.substitute(who='i', what='python')
  4. i like python
  5. >>>print s.safe_substitute(who='i') # 缺少key时不会抛错
  6. i like $what
  7. >>>Template('${who}LikePython').substitute(who='I') # 在字符串内时使用{}
  8. 'ILikePython'

Template还有更加高级的用法,可以通过继承string.Template, 重写变量delimiter(定界符)和idpattern(替换格式), 定制不同形式的模板。

  1. import string
  2. template_text = '''
  3. Delimiter : $de
  4. Replaced : %with_underscore
  5. Ingored : %notunderscored
  6. '''
  7. d = {'de': 'not replaced',
  8. 'with_underscore': 'replaced',
  9. 'notunderscored': 'not replaced'}
  10. class MyTemplate(string.Template):
  11. # 重写模板 定界符(delimiter)为"%", 替换模式(idpattern)必须包含下划线(_)
  12. delimiter = '%'
  13. idpattern = '[a-z]+_[a-z]+'
  14. print string.Template(template_text).safe_substitute(d) # 采用原来的Template渲染
  15. print MyTemplate(template_text).safe_substitute(d) # 使用重写后的MyTemplate渲染

输出:


  1. Delimiter : not replaced
  2. Replaced : %with_underscore
  3. Ingored : %notunderscored
  4. Delimiter : $de
  5. Replaced : replaced
  6. Ingored : %notunderscored

原生的Template只会渲染界定符为$的情况,重写后的MyTemplate会渲染界定符为%且替换格式带有下划线的情况。

4.常用字符串技巧

  • 1.反转字符串
  1. >>> s = '1234567890'
  2. >>> print s[::-1]
  3. 0987654321
  • 2.关于字符串链接

  尽量使用join()链接字符串,因为’+’号连接n个字符串需要申请n-1次内存,使用join()需要申请1次内存。

  • 3.固定长度分割字符串
  1. >>> import re
  2. >>> s = '1234567890'
  3. >>> re.findall(r'.{1,3}', s) # 已三个长度分割字符串
  4. ['123', '456', '789', '0']
  • 4.使用()括号生成字符串
  1. sql = ('SELECT count() FROM table '
  2. 'WHERE id = "10" '
  3. 'GROUP BY sex')
  4. print sql
  5. SELECT count() FROM table WHERE id = "10" GROUP BY sex
  • 5.将print的字符串写到文件
  1. >>> print >> open("somefile.txt", "w+"), "Hello World" # Hello World将写入文件somefile.txt

Python标准库笔记(1) — string模块的更多相关文章

  1. Python 标准库笔记(1) — String模块

    原文出处: j_hao104 String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 1. 常用方法 常用方法 描述 str.capitalize() 把字符串的首字母大 ...

  2. (转)Python 标准库笔记:string模块

    String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 原文:http://www.10tiao.com/html/384/201709/2651305041/1.htm ...

  3. Python标准库笔记(9) — functools模块

    functools 作用于函数的函数 functools 模块提供用于调整或扩展函数和其他可调用对象的工具,而无需完全重写它们. 装饰器 partial 类是 functools 模块提供的主要工具, ...

  4. Python标准库笔记(8) — pprint模块

    struct模块提供了用于在字节字符串和Python原生数据类型之间转换函数,比如数字和字符串. Python版本: 2.x & 3.x 该模块作用是完成Python数值和C语言结构体的Pyt ...

  5. Python标准库笔记(11) — Operator模块

    Operator--标准功能性操作符接口. 代码中使用迭代器时,有时必须要为一个简单表达式创建函数.有些情况这些函数可以用一个lambda函数实现,但是对于某些操作,根本没必要去写一个新的函数.因此o ...

  6. Python标准库笔记(10) — itertools模块

    itertools 用于更高效地创建迭代器的函数工具. itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发.它们的目的是快速有效地使用内存, ...

  7. python标准库介绍——4 string模块详解

    ==string 模块== ``string`` 模块提供了一些用于处理字符串类型的函数, 如 [Example 1-51 #eg-1-51] 所示. ====Example 1-51. 使用 str ...

  8. Python标准库笔记(6) — struct模块

    该模块作用是完成Python数值和C语言结构体的Python字符串形式间的转换.这可以用于处理存储在文件中或从网络连接中存储的二进制数据,以及其他数据源. 用途: 在Python基本数据类型和二进制数 ...

  9. Python标准库笔记(4) — collections模块

    这个模块提供几个非常有用的Python容器类型 1.容器 名称 功能描述 OrderedDict 保持了key插入顺序的dict namedtuple 生成可以使用名字来访问元素内容的tuple子类 ...

随机推荐

  1. Java内存分配及垃圾回收机制

    Java内存区域 1.内存区域 jvm运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 方法区 Java堆 大图 2.概念解释 程序计数器   线程私有的一块很小的内存空间,它是当前线程所执行 ...

  2. lambda 分组练习

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Person> per ...

  3. 【bzoj1708】[USACO2007 Oct]Money奶牛的硬币 背包dp

    题目描述 在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币系统中,硬币的面值通常是1,5,10,20或25,50,以及100单位的 ...

  4. Qt——树结点的搜索

    一.Qt中的树 平时我们经常使用树的结构来组织和展示数据,比如文件系统等—— 在Qt中,我们可以使用Qt提供的便捷的QTreeWidget类,利用该类的接口,轻松地将已有数据显示在树中. 除此之外,还 ...

  5. [NOI2017]蔬菜 贪心

    题面: [NOI2017]蔬菜 题解: 首先每天蔬菜会变质这点并不好处理,我们考虑让时间倒流,从后向前处理,这样的话就相当于每天都会得到一定量的蔬菜. 这样做有什么好处呢? 我们可以发现一个性质:如果 ...

  6. 重拾C#教程:变量

    一个变量只不过是一个供程序操作的存储区的名字.在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局.范围内的值可以存储在内存中,可以对变量进行一系列操作. 我们已经讨论了各种数据类 ...

  7. BZOJ4337:[BJOI2015]树的同构——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4337 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根, ...

  8. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  9. 面向小数据集构建图像分类模型Keras

    文章信息 本文地址:http://blog.keras.io/building-powerful-image-classification-models-using-very-little-data. ...

  10. A great tutorial with Jupyter notebook for ML beginners

    An end to end implementation of a Machine Learning pipeline SPANDAN MADAN Visual Computing Group, Ha ...