![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python标准库
学习中的编程老菜鸟
学无止境!
展开
-
第一章:文本-文本常量和模板-函数
1.1 string:文本常量和模板1.1.1 函数函数capwords()会把一个字符串中的所有单词首字母大写。import strings = "The quick brown fox jumped over the lazy dog."print(s)print(string.capwords(s))这个代码的结果等同于先调用split(),把结果列表中的单词首字母大写,然后...转载 2019-01-25 21:33:42 · 491 阅读 · 0 评论 -
第一章:文本-文本常量和模板-模板
1.1.2 模板字符串模板是PEP292新增的部分,将作为内置拼接语法的替代做法。使用string.Template拼接时,要在名字前加前缀$来标识变量。或者,如果有必要区分变量和周围的文本,可以使用大括号包围变量。下面这个例子对一个简单模板、使用%操作符的类似字符串拼接以及使用str.format()的新格式化字符串语法做了比较:import stringvalues = {'var'...转载 2019-01-25 22:17:30 · 258 阅读 · 0 评论 -
第一章:文本-文本常量和模板-高级模板
1.1.3 高级模板可以调整string.Tempplate在模板体中查找变量名所使用的正则表达模式,以改变它的默认语法。为此,一种简单的方法是修改delimiter和idpattern类属性。import stringclass MyTemplate(string.Template): delimiter = '%' idpattern = '[a-z]+_[a-z]+'...转载 2019-01-26 09:13:34 · 225 阅读 · 0 评论 -
第一章:文本-文本常量和模板-Formatter
1.1.4 FormatterFormatter类实现了与str的format()方法同样的布局规范语言。它的特性包括类型强制转换、对齐、属性和域引用、命名和位置模板参数以及类型特定的格式化选项。大部分情况下format()方法都能更便利地访问这些特性,不过也可以利用Formatter构建子类,以备需要改动的情况。...转载 2019-01-26 09:23:03 · 205 阅读 · 0 评论 -
第一章:文本-文本常量和模板-常量
1.1.5 常量string模块包括大量与ASCII和数值字符集相关的常量。import inspectimport stringdef is_str(value): return isinstance(value,str)for name,value in inspect.getmembers(string,is_str): if name.startswith('...转载 2019-01-26 09:27:32 · 358 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-示例数据
1.2.1 示例数据需要美观打印(pretty-pprinting)的情况下,可以使用textwrap模块格式化要输出的文本。它提供了很多文本编辑器和字处理器中都有的段落自动换行或填充特性。本节中的例子会使用模块textwrap_example.py,其中包含一个字符串sample_text。# textwrap_example.pysample_text = ''' The t...转载 2019-01-26 09:41:15 · 236 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-填充段落
1.2.2 填充段落fill()函数取文本作为输入,生成格式化文本作为输出。import textwrapfrom textwrap_example import sample_textprint(textwrap.fill(sample_text,width=50))结果不是太让人满意。文本现在已经左对齐,不过只有第一行保留了缩进,后面各行前面的空格则嵌在段落中。运行结果:...转载 2019-01-26 09:46:34 · 244 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-去除现有的缩进
1.2.3 去除现有的缩进关于前面的例子,其输出中混合嵌入了制表符和额外的空格,所以格式不太美观。用dedent()可以去除示例文本中所有行前面的空白符,这会生成更好的结果,并且允许在python代码中直接使用docstring或内嵌的多行字符串,同时去除代码本身的格式。示例字符串专门加入了一级缩进来展示这个特性。import textwrapfrom textwrap_example im...转载 2019-01-26 09:53:26 · 634 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-结合dedent和fill
1.2.4 结合dedent和fill接下来,可以把去除缩进的文本传入fill(),并指定一些不同的width值。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(sample_text).strip()for width in [45,60]: prin...转载 2019-01-26 09:59:37 · 245 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-缩进块
1.2.5 缩进块可以使用indent()函数为一个字符串找那个的所有行增加一致的前缀文本。这个例子会格式化通用的示例文本,就好像它是回复邮件中所引用的原email的一部分,这里使用>作为每一行的前缀。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(samp...转载 2019-01-26 10:07:02 · 396 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-悬挂缩进
1.2.6 悬挂缩进不仅可以设置输出的宽度,还可以采用通用的方式单独控制首行的缩进,使首行的缩进不同于后续的各行。import textwrapfrom textwrap_example import sample_textdedented_text = textwrap.dedent(sample_text).strip()print(textwrap.fill(dedented_t...转载 2019-01-26 10:20:29 · 491 阅读 · 0 评论 -
第一章:文本-textwrap:格式化文本段落-截断长文本
1.2.7 截断长文本可以使用shorten()截断长文本来创建一个小结或预览。所有现有的空白符(如制表符、换行符以及多个空格组成的序列)都会被规范化为一个空格。然后文本将被截断为小于或等于指定的长度,而且会在单词边界之间截断,避免包含不完整的单词。import textwrapfrom textwrap_example import sample_textdedented_text =...转载 2019-01-26 10:23:16 · 274 阅读 · 0 评论 -
第一章:文本-re:正则表达式-查找文本中的模式
1.3 re:正则表达式正则表达式(regular expression)是用一种形式化语法描述的文本匹配模式。模式会被解释为一组指令,然后执行这些指令并提供一个字符串作为输入,将生成一个匹配子集或者生成原字符串的一个修改版本。“正则表达式”在讨论中经常简写为“regex”或“regexp”。表达式可以包含字面量文本匹配、重复、模式组合、分支和其他复杂的规则。与创建一个特定用途的词法分析器和解析...转载 2019-01-27 07:53:20 · 448 阅读 · 0 评论 -
第一章:文本-re:正则表达式-用模式修改字符串
1.3.10 用模式修改字符串除了搜索文本之外,re还支持使用正则表达式作为搜索机制来修改文本,而且替换(replacement)可以引用模式中的匹配组作为替代文本的一部分。使用sub()可以将 一个模式的所有出现替换为另一个字符串。import rebold = re.compile(r'\*{2}(.*?)\*{2}')text = 'Make this **bold**. Thi...转载 2019-01-31 20:15:33 · 277 阅读 · 0 评论 -
第一章:文本-re:正则表达式-利用模式拆分
1.3.11 利用模式拆分str.split()是分解字符串来完成解析的最常用的方法之一。不过,它只支持使用字面量只作为分隔符。有时,如果输入没有一致的格式,那么就需要有一个正则表达式。例如,很多纯文本标记语言都把段落分隔符定义为两个或多个换行符(\n)。在这种情况下,就不能使用str.split(),因为这个定义中提到了“或多个”。通过findall()标识段落的一种策略是使用类似(.+?)\...转载 2019-01-31 20:22:47 · 467 阅读 · 0 评论 -
第一章:文本-re:正则表达式-编译表达式
1.3.2 编译表达式尽管re包括模块级函数,可以处理作为文本字符串的正则表达式,但是对于程序频繁使用的表达式而言,编译它们会更为高效。compile()函数会把一个表达式字符串转换为一个Regexobject.import re# Precompile the patterns.regexes = [ re.compile(p) for p in ['this','th...转载 2019-01-27 07:59:12 · 233 阅读 · 0 评论 -
第一章:文本-re:正则表达式-多重匹配
1.3.3 多重匹配到目前为止,示例模式都只是使用search()来查找字面量文本字符串的单个实例。findall()函数会返回输入中与模式匹配而且不重叠的所有子串。import retext = 'abbaaabbbbaaaaa'pattern = 'ab'for match in re.findall(pattern,text): print('Found {!r}'....转载 2019-01-27 08:05:15 · 979 阅读 · 0 评论 -
第一章:文本-re:正则表达式-模式语法(1)
13.4 模式语法除了简单的字面量文本字符串,正则表达式还支持更强大的模式。模式可以重复,可以锚定到输入中不同的逻辑位置,可以紧凑的形式表述而不需要在模式中提供每一个字面量字符。可以结合字面量文本值和元字符来使用所有这些特性,元字符是re实现的正则表达式模式语法的一部分。# re_test_patterns.pyimport redef test_patterns(text,patter...转载 2019-01-27 08:18:35 · 185 阅读 · 0 评论 -
第一章:文本-re:正则表达式-模式语法(2)
1.3.4.2 字符集字符集(character set)是一组字符,包含可以与模式中当前位置匹配的所有字符。例如,[ab]可以匹配a或b.# re_test_patterns.pyimport redef test_patterns(text,patterns): """Given source text and a list of patterns,look for ...转载 2019-01-27 08:31:20 · 362 阅读 · 0 评论 -
第一章:文本-re:正则表达式-模式语法(3)
1.3.4.3 转义码一种更简洁的表示是对一些预定义的字符集使用转义码。Re可识别的转义码如表1-1所示。表1-1 正则表达式转义码转义码含义\d数字\D非数字\s空白符(制表符、空格、换行等)\S非空白符\w字母数字\W非字母数字说明:可以在字符前加一个反斜线(\)来指示转义。遗憾的是,反斜线本身在正常的Python字符...转载 2019-01-27 08:47:10 · 188 阅读 · 0 评论 -
第一章:文本-re:正则表达式-模式语法(4)
1.3.4.4 锚定除了描述要匹配的模式的内容之外,还可以使用锚定指定指定模式在输入文本中的相对位置。表1-2列出了合法的锚定码。表1-2 正则表达式锚定码锚定码含 义^字符串或行的开头$字符串或行末尾\A字符串开头\Z字符串末尾\b单词开头或末尾的空串\B不在单词开头或末尾的空串# re_test_patterns.py...转载 2019-01-27 08:58:01 · 180 阅读 · 0 评论 -
第一章:文本-re:正则表达式-限制搜索
1.3.5 限制搜索有些情况下,可以提前知道只需要搜索整个输入的一个子集,在这些情况下,可以告诉re限制搜索范围从而进一步约束正则表达式匹配。例如,如果模式必须出现在输入开头,那么使用match()而不是search()会锚定搜索,而不必显示地在搜索模式中包含一个锚。import retext = 'This is some text -- with punctuation.'patte...转载 2019-01-27 09:19:27 · 329 阅读 · 0 评论 -
第一章:文本-re:正则表达式-用组解析匹配
1.3.6 用组解析匹配搜索模式匹配是正则表达式强大能力的基础。为模式提供组可以隔离匹配文本的各个部分,以扩展这些功能来创建一个解析器。可以用小括号包围模式来定义组。# re_test_patterns.pyimport redef test_patterns(text,patterns): """Given source text and a list of patterns,...转载 2019-01-27 09:47:14 · 400 阅读 · 0 评论 -
第一章:文本-difflib:比较序列-比较文本体
1.4 difflib:比较序列difflib模块包含一些计算机和处理序列之间差异的工具。它对于比较文本尤其有用,其中的函数可以使用多种常用的差异格式生成报告。# difflib_data.pytext1 = """Lorem ipsum dolor sit amet,consectetuer adipiscingelit. Integer eu lacus accumsan arcu f...转载 2019-02-01 21:00:19 · 239 阅读 · 0 评论 -
第一章:文本-difflib:比较序列-无用数据
1.4.2 无用数据所有生成差异序列的函数都会接受一些参数来指示应当忽略哪些行,以及要忽略一行中的哪些字符。例如,这些参数可用于跳过文件两个版本中的标记或空白符改变。# This example is adapted from the source for difflib.pyfrom difflib import SequenceMatcherdef show_results(mat...转载 2019-02-01 21:04:10 · 261 阅读 · 0 评论 -
第一章:文本-difflib:比较序列-比较任意类型
1.4.3 比较任意类型SequenceMatcher类可以比较任意类型的两个序列,只要它们的值是可散列的。这个类使用一个算法来标识序列中最长的连续匹配块,并删除对实际数据没有贡献的无用值。函数get_opcodes()返回一个指令列表来修改第一个序列,使它与第二个序列匹配。这些指令被编码为5元素元组,包括一个字符串指令(“操作码”)和序列的两对开始及结束索引(表示为i1、i2、j1、j2)。如...转载 2019-02-01 21:11:33 · 577 阅读 · 0 评论 -
第一章:文本-re:正则表达式-搜索选项(1)
1.3.7 搜索选项选项标志用来改变匹配引擎处理表达式的方式。可以使用位或(OR)操作结合这些标志,然后传递到compile(),search(),match()和其他接受搜索模式的函数。1.3.7.1 大小写无关的匹配IGNORECASE会使模式中的字面量字符以及字符区间与大小写字符都匹配。import retext = 'This is some text -- with punc...转载 2019-01-28 19:50:31 · 188 阅读 · 2 评论 -
第一章:文本-re:正则表达式-搜索选项(2)
1.3.7.2 多行输入有两个标志会影响如何完成多行输入中的搜索:MULTILINE和DOTALL。MULTILINE标志控制模式匹配代码如何对包含换行符的文本处理锚定指令。打开多行模式时,对^和$的锚定规则除了应用于整个字符串之外,还会在各行的开头和末尾应用。import retext = 'This is some text -- with punctuation .\nA secon...转载 2019-01-28 19:54:42 · 131 阅读 · 0 评论 -
第一章:文本-re:正则表达式-搜索选项(3)
1.3.7.3 Unicode在python3中,str对象使用完整的Unicode字符集,str的正则表达式处理会假设模式和输入文本都是Unicode.之前描述的转义码默认的也是按Unicode定义。这些假设意味着模式\w+对单词"French"和"Français"都能匹配。要向python2中的默认假设那样将转义码限制到ASCII字符集,编译模式或者调用模块级函数search()和matc...转载 2019-01-28 19:58:30 · 115 阅读 · 0 评论 -
第一章:文本-re:正则表达式-搜索选项(4)
1.3.7.4 详细表达式语法随着表达式变得越来越复杂,紧凑格式的正则表达式可能会变成障碍。随着表达式中组数的增加,需要做更多的工作来明确为什么需要各个元素,以及表达式的各部分究竟如何交互。使用命名组可以帮助缓解这些问题,不过更好的解决方案是使用详细模式(verbose mode)表达式,它允许在模式中嵌入注释和额外的空白符。可以用一个验证email地址的模式来展示详细模式会让正则表达式的处理更...转载 2019-01-28 20:04:29 · 300 阅读 · 0 评论 -
第一章:文本-re:正则表达式-搜索选项(5)
1.3.7.5 在模式中嵌入标志有些情况下,编译表达式时不能增加标志,如将一个模式作为参数传入一个库函数,这个库函数将在以后编译这个模式,在这种情况下,标志可以嵌入到表达式字符串本身。例如,要打开大小写无关匹配,可以在表达式开头增加(?i)。import retext = 'This is some text -- with punctuation.'pattern = r'(?i)\b...转载 2019-01-28 20:11:42 · 116 阅读 · 0 评论 -
第三章:算法-functools:管理函数的工具-修饰符-部分对象
3.1 functools:管理函数的工具functools模式提供了一些工具来调整或扩展函数和其他callable对象,从而不必完全重写。3.1.1 修饰符functools模块提供的主要工具就是partial类,可以用来“包装”一个有默认参数的callable对象。得到的对象本身就是callable,可以把它看作是原来的函数。它与原函数的参数完全相同,调用时还可以提供额外的位置或命名参数...转载 2019-02-14 21:15:00 · 118 阅读 · 0 评论 -
第三章:算法-functools:管理函数的工具-修饰符-获取函数属性
3.1.1.2 获取函数属性默认地,partial对象没有__name__或__doc__属性。如果没有这些属性,被修饰的函数将更难调试,使用update_wrapper()可以从原函数将属性复制或增加到partial对象。import functoolsdef myfunc(a,b=2): "Docstring for myfunc()." print(' called...转载 2019-02-14 21:17:37 · 104 阅读 · 0 评论 -
第三章:算法-functools:管理函数的工具-修饰符-其他callable
3.1.1.3 其他callablepartial适用于任何callable对象,而不只是独立的函数。import functoolsclass MyClass: "Demonstration class for functools" def __call__(self,e,f=6): "Docstring for MyClass.__call__" ...转载 2019-02-14 21:19:35 · 96 阅读 · 0 评论 -
第三章:算法-functools:管理函数的工具-修饰符-方法和函数
3.1.1.4 方法和函数partial()返回一个可以直接使用的callable,partialmethod()返回的callable则可以用作对象的非绑定方法。在下面的例子中,这个独立函数两次被增加为MyClass的属性,一次使用partialmethod()作为methid1(),另一次使用partial()作为method2()。import functoolsdef standa...转载 2019-02-14 21:21:41 · 113 阅读 · 0 评论 -
第三章:算法-functools:管理函数的工具-修饰符-获取修饰符的函数属性
3.1.1.5 获取修饰符的函数属性更新所包装callable的属性对修饰符尤其有用,因为转换后的函数最后会得到原"裸"函数的属性。import functoolsdef show_details(name,f): "Show details of a callable object." print('{}:'.format(name)) print(' obje...转载 2019-02-14 21:23:47 · 116 阅读 · 0 评论 -
第二章:数据结构-enum:枚举类型-创建枚举
2.1 enum: 枚举类型enum模块定义了一个提供迭代和比较功能的枚举类型。可以用这个模块为值创建明确定义的符号,而不是使用字面量整数或字符串。2.1.1 创建枚举可以使用class语法派生Enum并增加描述值的类属性来定义一个新枚举。import enumclass BugStatus(enum.Enum): new = 7 incomplete = 6 ...转载 2019-02-04 19:56:43 · 692 阅读 · 0 评论 -
第二章:数据结构-enum:枚举类型-迭代
2.1.2 迭代迭代处理enum类会生成枚举的各个成员。import enumclass BugStatus(enum.Enum): new = 7 incomplete = 6 invalid = 5 wont_fix = 4 in_progress = 3 fix_committed = 2 fix_relessed = 1f...转载 2019-02-04 19:59:28 · 499 阅读 · 2 评论 -
第二章:数据结构-enum:枚举类型-比较Enum
2.1.3 比较Enum由于枚举成员是无序的,所以它们只支持按同一性和相等性进行比较。import enumclass BugStatus(enum.Enum): new = 7 incomplete = 6 invalid = 5 wont_fix = 4 in_progress = 3 fix_committed = 2 fix...转载 2019-02-04 20:04:00 · 2015 阅读 · 0 评论 -
第二章:数据结构-enum:枚举类型-唯一枚举值
2.1.4 唯一枚举值有相同值的Enum成员会被处理为同一个成员对象的别名引用。别名可以避免Enum的迭代器中出现重复的值。import enumclass BugStatus(enum.Enum): new = 7 incomplete = 6 invalid = 5 wont_fix = 4 in_progress = 3 fix_co...转载 2019-02-05 16:34:50 · 579 阅读 · 0 评论