Python 3标准库课件第一章(第二版)
文本
1.1 string:文本常量和模板
1.2 textwrap:格式化文本段落
1.3 re:正则表达式
1.4 difflib:比较序列
str类,
string.Template
textwrap
difflib
----------------------
1.1 string:文本常量和模板
string模块中 str模块中
函数capwords()
-------------------
Jupyter note --- 丘比特笔记本
1.1.1 函数
函数capwords()会把一个字符串中的所有单词首字母大写。
代码清单 1-1:string_capwords.py
--------------------------------
import string
print(s)
print(string.capwords(s))
--------------------------------
结果:
The quick brown fox jumped over the lazy dog.
The Quick Brown Fox Jumped Over The Lazy Dog.
------------------------------------------
这个代码的结果等同于先调用split(),把结果列表中的单词首字母大写,然后调用join()来合并结果。
PEP 292:更简单的字符串替换。
字符串模板是PEP 292新增的部分,将作为内置拼接语法的代替做法。使用string.Template拼接时,要在名字前面加前缀$来标识变量(例如,$var)。或者,如果有必要区分变量和周围的文本,可以用大括号
包围变量(例如,${var})。
下面这个例子对一个简单模板,使用%操作符的类似字符串拼接以及使用str.format()的新格式化字符串语法做了比较:
string.Template
------------------------------
import string
t = string.Template("""
Variable :$var
Escape :$$
Variable in text :${var}iable
"""
)
print('TEMPLATE:', t.substitute(values))
s = """
Variable :%(var)s
Escape :%%
Variable in text :%(var)siable
"""
print('INTERPOLATION', s % values)
s = """
Variable : %{var}
Escape : {{}}
Variable in text :{var}siable
"""
print('FORMAT:', s.format(**values))
-----------------------------------
在前面两种情况中,触发字符($或%)要重复两次来进行转义。在格式化语法中,需要重复{和}来转义。
-----------------------------------------------
TEMPLATE:
Variable :foo
Escape :$
Variable in text :fooiable
Variable :foo
Escape :%
Variable in text :fooiable
Variable : %foo
Escape : {}
Variable in text :foosiable
-------------------------------------------------
模板与字符串拼接或格式化的一个关键区别是,它不考虑参数的类型。值会转换为字符串,再将字符串插入结果。这里没有提供格式化选项。例如,没有办法控制使用几位有效数字来表示一个浮点值。
不过,这也有一个好处,通过使用sfe_substitute()方法,可以避免未能向模板提供所需的所有参数值时可能产生的异常。
-------------------------------------------------
代码清单1-3:string_template_missing.py
---------------------------------------
import string
t = string.Template("$var is here but $missing is not provided")
try:
print('substitute() :', t.substitute(values))
except KeyError as err:
print('ERROR:', str(err))
print('safe_substitute():', t.safe_substitute(values))
---------------------------------------
结果:
ERROR: 'missing'
safe_substitute(): foo is here but $missing is not provided
---------------------------------------
由于values字典中没有missing的值,所以substitute()会产生一个KeyError。safe_substitute()则不同,它不会抛出这个错误,而是会捕获这个错误并保留文本中的变量表达式。
可以调整string.Template在模板体中查找变量名所使用的正则表达式模式,以改变它的默认语法。为此,一种简单的方法是修改delimiter和idpattern类属性。
代码清单1-4:string_template_advanced.py
-----------------------------------------
import string
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
template_text = '''
Delimiter : %%
Replaced : %with_underscore
Ignored : %notunderscored
'''
d = {
'with_underscore': 'replaced',
'notunderscored': 'not replaced',
}
t = MyTemplate(template_text)
print('Modified ID pattern: ')
print(t.safe_substitute(d))
------------------------------------------
Modified ID pattern:
Replaced : replaced
Ignored : %notunderscored
------------------------------------------
在这个例子中,替换规则已经改变,定界符是%而不是$,而且变量名中间的某个位置必须包含一个下划线。模式%notunderscored不会被替换为任何字符串,因为它不包含下划线字符。
要完成更复杂的修改,可以覆盖pattern属性并定义一个全新的正则表达式。所提供的模式必须包含4个命名组,分别捕获转义定界符、命名变量、加括号的变量名和不合法的定界符模式。
dedent()
docstring
indent() 缩进
___Line_one.
_Line_three.
indent()
文本的第一行,缩进。
>
Perl Ruby Awk Tcl
C C++ Python
findall()函数
{m,n}
{m,}
忙了一天,我们单位的灾备环境,系统要做联通性测试,
气氛要轻松一点,语言要欢快一点,心情要开心一点,
------------------------
学习、成长的过程,
------------------------
1.3.4.1 重复
元字符*:
?
{m}
{m,n}
({m,})
贪心形式的表达式(a[ab]+)
转义码 含义
\d 数字
\D 非数字
\s 空白符(制表符、空格、换行等)
\S 非空白符
\w 字母数字
\W 非字母数字
-----------------------------------------
1.3.4.4 锚定
---------------------
表 1-2 正则表达式锚定码
锚定码 含义
^ 字符串或行的开头
$ 字符串或行末尾
\A 字符串开头
\Z 字符串末尾
\b 单词开头或末尾的空串
\B 不在单词开头或末尾的空串
----------------------------
1.3.5 限制搜索
----------------------------
match.groups()按匹配字符串的组在表达式中的顺序返回一个字符串序列。
----------------------------
1.3.7 搜索选项
----------------------------
可以使用位或(OR)
compile()、search()、match()
----------------------------
IGNORECASE会使模式中的字面量字符以及字符区间与大小写字符都匹配。
----------------------------
嵌入标志可以放在同一个组中结合使用。
表1-3 正则表达式缩写
---------------------------------------------------------------------------
标志 缩写
ASCII a
IGNORECASE i
MULTILINE m
DOTALL s
VERBOSE x
-----------------------------------------------------------------------------
1.3.8 前向或后向
-----------------------------------------------------------------------------
表1-4 difflib.get_opcodes()指令
--------------------------------
操作码 定义
'replace' 将a[i1:i2]替换为b[j1:j2]
'delete' 完全删除a[i1:i2]
'insert' 将b[j1:j2]插入a[i1:i2]
'equal' 两个序列已经相等
--------------------------------------------------
Python 3标准库课件第一章(第二版)的更多相关文章
- Python 3标准库课件第一章
第一章文本1.1 string:文本常量和模板1.2 textwrap:格式化文本段落1.3 re:正则表达式1.4 difflib:比较序列str类,string.Templatetextwrap ...
- Python 3标准库课件第二章
整理第一章我又觉得烦,我就看第二章了,灰头土脸的,第二章一.如列表(list).元组(tuple).字典(dict).集合(set)二.2.1 enum:枚举类型 enum模块定义了一个提供迭代和比较 ...
- Python 3标准库第四章
第四章日期和时间----------------- 不同于int.float和str,Python没有包含对应日期和时间的原生类型,不过提供了3个相应的模块,可以采用多种表示来管理日期和时间值. ...
- Python 3标准库课件
开课前的一些讲话: 一.大家晚上好,首先非常的荣幸能够在网易云平台开设讲解Python的这门课程,我也是第一次讲解哦,下面说说我讲解课程的原因,1.因为我发现市场上讲解Python的课程很多,不过,大 ...
- Python 3标准库第三章
时间过得很快,又是一周过去了,今天感觉迷迷糊糊的,不在状态,然后,下面开始我们的讲解,还是跟大家分享一下我自己的一些想法,第一.怎么讲了,就是各位如果有怀才不遇的想法,我感觉最好不要有这种想法;第二. ...
- Python 3标准库 第十一章 网路通信
网路通信11.1 ipaddress : Internet 地址 ipaddress模块提供了处理IPv4和IPv6 11.1.2 网络 CMDB 11.2 socket:网络通信 11.2. ...
- Python 3标准库 第五章 数学运算
第五章数学运算-----------------------上下文解释:编程时,我们一般也是先给程序定义一些前提(环境变量.描述环境变化的全局变量等),这些“前提”就是上文,然后再编写各功能模块的代码 ...
- Python 3标准库 第十四章 应用构建模块
Python 3标准库 The Python3 Standard Library by Example -----------------------------------------第十四章 ...
- 【python】标准库的大致认识
正如那句 Python 社区中很有名的话所说的:“battery included”,Python 的一大好处在于它有一套很有用的标准库(standard library).标准库是随着 Python ...
随机推荐
- PPT添加节
如果你要做很多PPT,而又不想把PPT分到很多个文件里,你可以在PPT中添加节(Section).这样你的PPT就像书本一样,一章一章的,非常方便.
- video标签在移动端的一些属性值设置
<video x5-video-orientation="portraint" src="" loop x-webkit-airplay="al ...
- 跨域常见解决方案jsonp,cors示例
方案 JSONP jsonp需要后端进行配置,并且前端需要动态生成script标签通过callback调用函数进行操作的跨域解决方案 不建议使用该方案: 前后端均需进行配置处理,增加了工作量 ...
- mac打开已损坏或者不明来源的应用的解决方法
如遇:「xxx.app已损坏,打不开.你应该将它移到废纸篓」,并非你安装的软件已损坏,而是Mac系统的安全设置问题,因为这些应用都是破解或者汉化的,那么解决方法就是临时改变Mac系统安全设置.出现这个 ...
- centos v7.0配置sftp
需求: 1.建立三个sftp帐号,admin,test1,test22.三个帐号分别在/home/sftp下拥有相应的目录3.test1和test2只能进入自己的目录,admin可以进入三个目录(ch ...
- Tomcat轻量级web服务器
1.三种web服务器 apache: 动态网站 nginx: 静态网站 tomcat:java开发的程序 2.tomcat安装 官网下载安装包(tomcat 9) 解压并放在/usr/local下 c ...
- Linux ulimit 命令 限制系统用户对 shell 资源的访问
ulimit命令用来限制系统用户对 shell 资源的访问,常见用法如下: [root@MongoDB ~]# ulimit -a // 查看当前所有的资源限制 [root@MongoDB ~]# u ...
- SPOJ 4003 Phone List 题解
题面 啊~,很水的一道trie树模板题: 当两个串存在关系时情况有两种: 若当前串插入后没有任何新建节点,则该串肯定是之前插入的某个串的前缀: 若在插入的时候,有某个经过的节点带有某串结尾的标记,则之 ...
- 从入门到自闭之python初识
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: print (int ...
- 关于 Spring AOP (AspectJ) 你该知晓的一切 (转)
出处:关于 Spring AOP (AspectJ) 你该知晓的一切